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