2009-12-03 2 views
0

В моем проекте я использую Oracle Database и SubSonic для DAL. У меня проблема с SubSonic и Oracle Schema, то есть:Изменение схемы Oracle во время выполнения при использовании SubSonic

При разработке я использовал схему DEV в базе данных Oracle и генерировал DAL с помощью SubSonic. После этого при выпуске клиенту он использовал новую схему TEST в Oracle Database и изменил строку подключения в app.config для подключения к Oracle. Появится ошибка, то есть «Таблица или представление не существует». Я нашел эту ошибку и вижу, что схема таблиц все еще DEV. Я не хочу повторно генерировать DAL после схемы изменений и после ее выпуска клиенту. Пожалуйста, помогите мне.

ответ

0

Во-первых, ваша схема не должна быть DEV. DEV является пользователем или ролью. Ваше имя схемы должно быть связано с содержимым данных (например, СЧЕТЧИКИ ИЛИ ПРОДАЖИ)

Во-вторых, подумайте, решите ли вы или заказчик имя схемы. Скажем, у вас есть продукт под названием FLINTSTONE. Вы можете решить, что имя схемы должно быть FLINTSTONE. Однако ваш клиент может захотеть запустить два экземпляра вашего продукта (например, один для местных продаж, другой для международных) и использовать одну и ту же базу данных. Поэтому им нужны FS_LOCAL и FS_INTER в качестве имен схем. Является ли этот параметр особенностью вашего продукта?

Затем решите, должно ли ваше приложение подключаться как владелец схемы. Есть хорошие причины безопасности для НЕ делать это. Например, владелец схемы имеет привилегии для удаления таблиц, что, как правило, не является чем-то, что приложение не делает, и, следовательно, по принципу наименьших привилегий - это то, что ваше приложение не должно иметь привилегий.

Как правило, я бы рекомендовал какой-либо параметр конфигурации для приложения для имени схемы, и после подключения к базе данных приложение должно выполнить «ALTER SESSION SET CURRENT_SCHEMA =», какой бы он не был конфигурационным файлом ». Пользователю базы данных приложения потребуются соответствующие права на вставку/обновление/удаление/выбор/выполнение объектов в схеме приложения. Если приложение не может этого сделать, у вас может быть триггер LOGON в базе данных.

0

Gary является правильным в использовании DEV в качестве схемы на вашей собственной машине. При использовании Oracle мы обычно устанавливаем схему как то, что клиент собирается назвать своей схемой. Однако это не устраняет проблему. Что вам нужно сделать, так это создать глобальный псевдоним в Oracle, который отображает DEV для CLIENTSCHEMA. Вы все равно должны переименовать схему на своем компьютере, но это позволит вашей схеме отличаться от ваших клиентов.

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

  • Нет связанных вопросов^_^