2010-01-14 5 views
0

Я работаю над приложением Delphi/WIN32, которое использует базу данных SQL Server в качестве исходного кода, используя ADO для доступа к данным. Есть много пользователей, которые используют это приложение, но один пользователь использует специальную настройку: у них есть несколько схем базы данных, и каждая схема содержит полный набор данных для приложения. Каждая схема также имеет пользователя базы данных, который по умолчанию использует конкретную схему. У них также есть отдельная учетная запись для каждого пользователя базы данных, позволяющая им контролировать, какую схему использовать, просто используя другую учетную запись в строке подключения. Они используют эту установку для создания единой централизованной базы данных, которая поддерживает несколько офисов. Обычно каждый офис имеет свою собственную базу данных, но здесь каждый офис имеет свою собственную схему.Как переключить схему базы данных?

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

Но теперь они спросили, можно ли изменить код таким образом, чтобы пользователь мог выбрать схему, к которой они хотят подключиться. Таким образом, пользователь должен иметь возможность переключаться между схемой в приложении. И я не хочу переписывать код для поддержки этой схемы просто потому, что мне нужно поддерживать базу данных SQL-кода нейтральной. Поэтому я ищу способ переключить пользователя на другую схему без особого влияния на сам код.

Любые предложения?

ответ

0

Как насчет изменения схемы по умолчанию пользователя?

ALTER USER <user name> 
    WITH DEFAULT_SCHEMA = <desired schema>; 

Конечно, вы должны будете выполнить это в разделе эскалация привилегий, как я уверен, что у вас нет всех пользователей с возможностями USER ALTER.

+0

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

+0

Я не понимаю, вы, похоже, указали, что логины: пользователи были 1: 1: «отдельная учетная запись для каждого пользователя базы данных» –

+0

К сожалению, нет. Между пользователями и входами существует соотношение 1: n. Но каждый вход подключается только к одному пользователю. –

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