【问题标题】:Use different schema name than the username使用与用户名不同的架构名称
【发布时间】:2013-12-19 10:54:09
【问题描述】:

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

BoDB_CONNECT 必须使用 BoDB 模式执行查询。

我没有 BoDB 架构的密码。

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

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

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

【问题讨论】:

    标签: business-objects


    【解决方案1】:

    首先,您必须获得对表格的访问权限,否则将无济于事。也就是说,BoDB_CONNECT 需要对将在 Universe 中引用的 BoDB 模式中的所有表具有 SELECT 权限。

    完成后,您有几个选项可以实现您的要求。最直接的方法是简单地在表名中包含模式所有者。当您将表格拖入 UDT 或 IDT 中的模型时,这会自动发生,并且是推荐的解决方案。

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

    如果出于某种原因,您不希望架构名称与表关联,则有两种选择:

    1. 在 BoDB_CONNECT 架构中为要在 BoDB 中引用的每个表创建一个私有同义词(例如 create synonym foo for bodb.foo)。因此,宇宙将只引用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 中工作。

    【讨论】:

    • 第二个选项似乎很有趣。我正在使用 oracle 数据库,我希望一切都会好起来的。这个选项还有其他缺点吗.. BEGIN_SQL
    • 我在 UDT 中对其进行了测试,它确实有效。生成解析错误的事实很重要,因为 Universe 总是无法通过完整性检查。您可以临时重命名表以包含实际的架构所有者,进行完整性检查并修复问题,然后重命名表以删除架构所有者。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2018-06-30
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多