2013-12-19 7 views
0

У нас есть бизнес-объекты X14 вселенной и у нас есть 2 схемы базы данных Oracle (Бодб, BoDB_CONNECT)Использовать другое имя схемы, чем имя пользователя

BoDB_CONNECT должен выполнять запросы с использованием схемы Бодб.

У меня нет пароля для схемы BoDB.

Итак, в основном я хочу войти в систему с именем пользователя BoDB_CONNECT и выполнить отчеты с помощью схемы BoDB (добавив BoDB.TABLENAME).

Но пока я создаю соединение, во Вселенной нет отдельного schemaname. Он просто имеет имя пользователя и пароль.

Я не хочу жестко указывать собственное имя каждой таблицы с помощью BoDB. Есть ли способ динамически сделать это?

ответ

1

Во-первых, вам нужно предоставить доступ к столам или ничего не получится. То есть, BoDB_CONNECT должен иметь разрешения SELECT ко всем таблицам схемы BoDB, на которые будут ссылаться во Вселенной.

Как только это будет сделано, у вас есть несколько вариантов для реализации вашего требования. Самый простой способ - просто включить владельца схемы с именем таблицы. Это происходит автоматически при перетаскивании таблицы в вашу модель в UDT или IDT и является рекомендуемым решением.

Вы также можете легко переключать владельцев, если, например, таблицы перемещаются в новую схему. Выберите все таблицы для перемещения и щелкните правой кнопкой мыши. В UDT выберите «Переименовать таблицу», а в IDT выберите «Изменить квалификатор/владелец». Затем вы можете установить новое имя владельца, и оно будет применено ко всем выбранным таблицам.

Если по какой-то причине, вы не хотите, имя схемы, связанной с таблицей, есть два варианта:

  1. Создать личный синоним в схеме BoDB_CONNECT для каждой таблицы можно было ссылаться в Бодб (например, create synonym foo for bodb.foo). Таким образом, у Вселенной будет только ссылка на foo. Обратите внимание, однако, что BI4.1 в настоящее время не поддерживает частные синонимы в UDT/IDT. Если вы создаете объекты, которые ссылаются на частные синонимы, они будут работать корректно в WebI, но они не будут анализировать UDT/IDT. Я считаю, что это ошибка (поскольку она работала во всех предыдущих версиях), и теперь у меня есть поддержка с SAP.
  2. Переключите схему по умолчанию. Вы можете изменить параметр BEGIN_SQL, чтобы установить схему по умолчанию. В UDT это выполняется через вкладку «Файл-> Параметры-Параметр»; в IDT это Data Foundation-> Properties-> Parameters. В любом случае вы должны установить значение BEGIN_SQL равным ALTER SESSION SET CURRENT_SCHEMA=bodb. Этот оператор будет выполнен в начале каждого сеанса запроса, поэтому ссылки на foo будут разрешены на bodb.foo. Обратите внимание, однако, что это не относится к действиям в самом IDT/UDT; поэтому вы получите ошибки разбора на объектах, у которых не указан владелец, но запросы будут работать в WebI.
+0

Второй вариант представляется интересным. Я использую базу данных оракула, и я надеюсь, что все будет хорошо. Есть ли другие недостатки для этой опции. BEGIN_SQL – Robert

+0

Я тестировал ее в UDT, и это действительно сработало. Тот факт, что генерируются ошибки анализа, является значительным, поскольку юниверс всегда будет отказываться от проверки целостности. Вы ** можете ** временно переименовать таблицы, чтобы включить фактического владельца схемы, проверить целостность и устранить проблемы, а затем переименовать таблицу, чтобы удалить владельца схемы. – Joe

Смежные вопросы