Возможно ли иметь один и тот же запрос, но на основе другого пользователя, который в настоящее время вошел в систему, запрашивать информацию из разных баз данных?

Пример: у нас есть приложение с разными средами dev / test / int и т. Д. Для каждой среды у нас есть разные соединения JDBC с сервером MSSQL. Основная идея состоит в том, чтобы всегда иметь один и тот же запрос, например:

SELECT * FROM config_db.clients

Но внутренне, на основе текущего пользователя в строке подключения (например, user_dev, user_test и т. Д.) Получить ответ от config_db_dev, config_db_test и т. Д.? Надеюсь, вопрос имеет смысл.

Заранее спасибо!

0
Sergej Klementinovski 15 Фев 2021 в 20:07

1 ответ

Лучший ответ

Возможно ли иметь один и тот же запрос, но на основе другого пользователя, который в настоящее время вошел в систему, запрашивать информацию из разных баз данных?

Конечно. Логины имеют база данных по умолчанию, а у пользователей есть схема по умолчанию.

Оба они могут повлиять на разрешение имени объекта.

Если вы используете имя из одной части, например

SELECT * FROM clients

Тогда SQL Server сначала будет искать объект с именем «клиенты» в пользовательской схеме по умолчанию, а затем в схеме dbo в текущей базе данных.

Если вы используете имя из двух частей, например

SELECT * FROM foo.clients

Тогда SQL Server будет искать объект с именем «clients» в схеме «foo» в текущей базе данных.

0
David Browne - Microsoft 15 Фев 2021 в 17:50