Поделиться через


SETUSER (Transact-SQL)

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

Важное примечаниеВажно!

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

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

SETUSER [ 'username' [ WITH NORESET ] ] 

Аргументы

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

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

Замечания

Инструкция SETUSER может быть использована членом предопределенной роли сервера sysadmin или предопределенной роли базы данных 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
SETUSER