схема значения по умолчанию набора для запроса SQL

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

Например, я хотел бы сделать что-то вроде этого:

Use [schemaName]
select * from [tableName]

в противоположность этому:

select * from [schemaName].[tableName]
60
задан 9 February 2011 в 09:42

1 ответ

Очень старый вопрос, но так как Google привел меня сюда, я добавлю решение, которое я нашел полезным:

Шаг 1. Создайте пользователя для каждой схемы, которую необходимо смочь использовать. Например, шаг 2 "user_myschema"

. Используйте ВЫПОЛНЯЮТ AS для выполнения SQL-операторов как необходимого пользователя схемы.

Шаг 3. Используйте ВОЗВРАЩАЮТСЯ для переключения назад на исходного пользователя.

Пример: Скажем, у Вас есть таблица "mytable" подарок в схеме "otherschema", который не является Вашей схемой по умолчанию. Выполнение "ВЫБОРА * ОТ mytable" не будет работать.

Создают пользователя, назвал "user_otherschema" и установил схему того пользователя по умолчанию, чтобы быть "otherschema".

Теперь можно запустить этот скрипт для взаимодействия с таблицей:

EXECUTE AS USER = 'user_otherschema';
SELECT * FROM mytable
REVERT

вернуться операторы сбрасывают текущего пользователя, таким образом, Вы самостоятельно снова.

Ссылка для ВЫПОЛНЕНИЯ документации AS: https://docs.microsoft.com/en-us/sql/t-sql/statements/execute-as-transact-sql? view=sql-server-2017

0
ответ дан 1 November 2019 в 10:54

Другие вопросы по тегам:

Похожие вопросы: