使用与用户名不同的模式名称

时间:2013-12-19 10:54:09

标签: business-objects

我们有一个Business Objects X14 Universe,我们有2个oracle数据库模式(BoDB,BoDB_CONNECT)

BoDB_CONNECT必须使用BoDB架构执行查询。

我没有BoDB架构的密码。

所以,基本上我想用BoDB_CONNECT用户名登录并使用BoDB架构执行报告(通过附加BoDB.TABLENAME)。

但是当我创建连接时,宇宙中没有单独的schemaname。它只有用户名和密码。

我不想用BoDB对每个表的所有者名称进行硬编码。有没有办法动态地做到这一点?

1 个答案:

答案 0 :(得分:1)

首先,您必须获得对表的访问权限,否则什么都不会起作用。也就是说,BoDB_CONNECT需要对将在Universe中引用的BoDB架构中的所有表具有SELECT权限。

完成后,您可以选择一些方法来实现您的要求。最直接的方法是简单地将架构所有者包含在表名中。当您在UDT或IDT中将表拖入模型时,会自动执行此操作,这是推荐的解决方案。

例如,如果将表移动到新架构,您也可以轻松切换所有者。选择要移动的所有表,然后单击鼠标右键。在UDT中,选择“重命名表”,然后在IDT中选择“更改限定符/所有者”。然后,您可以设置新的所有者名称,该名称将应用于所有选定的表。

如果出于某种原因,您不希望与该表关联的模式名称,则有两个选项:

  1. 为BoDB中引用的每个表(例如create synonym foo for bodb.foo)在BoDB_CONNECT模式中创建一个私有同义词。因此,宇宙只会引用foo。但请注意,BI4.1当前不支持UDT / IDT中的私有同义词。如果您创建引用私有同义词的对象,它们将在WebI中正常工作,但它们不会在UDT / IDT中解析。我相信这是一个错误(因为它适用于所有以前的版本),我现在有一个SAP支持案例。
  2. 切换默认架构。您可以更改BEGIN_SQL参数以设置默认架构。在UDT中,这是通过File-> Parameters-Parameter选项卡完成的;在IDT中,它是数据基础 - >属性 - >参数。在任何一种情况下,您都要将BEGIN_SQL的值设置为ALTER SESSION SET CURRENT_SCHEMA=bodb。此语句将在每个查询会话开始时执行,因此对foo的引用将解析为bodb.foo。但请注意,这不适用于IDT / UDT本身的操作;因此,您将在没有指定所有者的对象上获得解析错误,但查询将在WebI中起作用。