SETUSER (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Позволяет члену предопределенной роли сервера sysadmin или владельцу базы данных олицетворять другого пользователя.

Внимание

SETUSER включен только для обратной совместимости. SETUSERможет не поддерживаться в будущих выпусках SQL Server. Вместо этого рекомендуется использовать EXECUTE AS .

Соглашения о синтаксисе Transact-SQL

Синтаксис

  
SETUSER [ 'username' [ WITH NORESET ] ]   

Аргументы

'username'
Имя пользователя Windows или SQL Server, олицетворение которого выполняется в текущей базе данных. Если аргумент username не определен, то восстанавливаются первоначальные учетные данные системного администратора или владельца базы данных, выполняющего олицетворение пользователя.

С НОРСЕТОМ
Указывает, что последующие SETUSER операторы (без указанного имя пользователя) не должны сбрасывать идентификатор пользователя на системного администратора или владельца базы данных.

Замечания

SETUSER может использоваться членом роли стационарного сервера системного администратора или владельцем базы данных для принятия личности другого пользователя с целью проверки разрешений другого пользователя. Членства в предопределенной роли базы данных db_owner недостаточно.

Используйте SETUSER только с пользователями SQL Server. SETUSERне поддерживается пользователями Windows. Если SETUSER объекты использовались для принятия идентичности другого пользователя, любые объекты, которые создаёт имитационный пользователь, принадлежат пользователю, который имитирует. Например, если владелец базы данных использует идентификатор пользователя Margaret и создает таблицу с названием orders, то владельцем таблицы orders будет пользователь Margaret, а не системный администратор.

SETUSER остаётся в силе до выпуска нового SETUSER заявления или до изменения текущей базы данных с помощью USE.

Примечание.

Если SETUSER используется WITH NORESET, владелец базы данных или системный администратор должен выйти из системы, а затем снова войти, чтобы восстановить свои права.

Разрешения

Необходимо быть членом предопределенной роли сервера sysadmin или владельцем базы данных. Членства в предопределенной роли базы данных db_owner недостаточно

Примеры

Следующий пример показывает, как владелец базы данных может использовать учетные данные другого пользователя. Пользователь mary создала таблицу под названием computer_types. Используя SETUSER, владелец базы данных выдаёт mary себя за себя, чтобы предоставить пользователю joe доступ к computer_types таблице, а затем сбрасывает свою собственную идентичность.

SETUSER 'mary';  
GO  
GRANT SELECT ON computer_types TO joe;  
GO  
--To revert to the original user  
SETUSER;  

См. также

DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
USE (Transact-SQL)