我们有一个Business Objects X14 Universe,我们有2个oracle数据库模式(BoDB,BoDB_CONNECT)
BoDB_CONNECT必须使用BoDB架构执行查询。
我没有BoDB架构的密码。
所以,基本上我想用BoDB_CONNECT用户名登录并使用BoDB架构执行报告(通过附加BoDB.TABLENAME)。
但是当我创建连接时,宇宙中没有单独的schemaname。它只有用户名和密码。
我不想用BoDB对每个表的所有者名称进行硬编码。有没有办法动态地做到这一点?
答案 0 :(得分:1)
首先,您必须获得对表的访问权限,否则什么都不会起作用。也就是说,BoDB_CONNECT需要对将在Universe中引用的BoDB架构中的所有表具有SELECT权限。
完成后,您可以选择一些方法来实现您的要求。最直接的方法是简单地将架构所有者包含在表名中。当您在UDT或IDT中将表拖入模型时,会自动执行此操作,这是推荐的解决方案。
例如,如果将表移动到新架构,您也可以轻松切换所有者。选择要移动的所有表,然后单击鼠标右键。在UDT中,选择“重命名表”,然后在IDT中选择“更改限定符/所有者”。然后,您可以设置新的所有者名称,该名称将应用于所有选定的表。
如果出于某种原因,您不希望与该表关联的模式名称,则有两个选项:
create synonym foo for bodb.foo
)在BoDB_CONNECT模式中创建一个私有同义词。因此,宇宙只会引用foo
。但请注意,BI4.1当前不支持UDT / IDT中的私有同义词。如果您创建引用私有同义词的对象,它们将在WebI中正常工作,但它们不会在UDT / IDT中解析。我相信这是一个错误(因为它适用于所有以前的版本),我现在有一个SAP支持案例。ALTER SESSION SET CURRENT_SCHEMA=bodb
。此语句将在每个查询会话开始时执行,因此对foo
的引用将解析为bodb.foo
。但请注意,这不适用于IDT / UDT本身的操作;因此,您将在没有指定所有者的对象上获得解析错误,但查询将在WebI中起作用。