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 не определен, то восстанавливаются первоначальные учетные данные системного администратора или владельца базы данных, выполняющего олицетворение пользователя.
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)