SETUSER (Transact-SQL)

Применимо к:SQL Server Управляемый экземпляр SQL Azure

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

Важно!

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

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

Синтаксис

  
SETUSER [ 'username' [ WITH NORESET ] ]   

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

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

WITH NORESET
Указывает, что последующие инструкции SETUSER (без указания аргумента username) не должны восстанавливать вместо учетных данных пользователя учетные данные системного администратора или владельца базы данных.

Замечания

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

Для пользователей SQL Server применяйте только SETUSER. 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)