SETUSER (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Permite que um membro da função de servidor fixa sysadmin ou o proprietário do banco de dados represente outro usuário.

Importante

SETUSER é incluído somente para compatibilidade com versões anteriores. SETUSER pode não ter suporte em uma versão futura do SQL Server. Recomendamos o uso de EXECUTE AS.

Convenções de sintaxe de Transact-SQL

Sintaxe

  
SETUSER [ 'username' [ WITH NORESET ] ]   

Argumentos

' username '
É o nome de um usuário do Windows ou do SQL Server no banco de dados atual que é representado. Quando username não é especificado, a identidade original do administrador do sistema ou do proprietário do banco de dados que representa o usuário é redefinida.

WITH NORESET
Especifica que as instruções SETUSER seguintes (sem nenhum username especificado) não devem redefinir a identidade do usuário como administrador do sistema ou proprietário do banco de dados.

Comentários

SETUSER pode ser usado por um membro da função de servidor fixa sysadmin ou o proprietário de um banco de dados para adotar a identidade de outro usuário e testar suas permissões. A associação à função de banco de dados fixa db_owner não é suficiente.

Use SETUSER somente com usuários do SQL Server. SETUSER não tem suporte com usuários de Windows. Quando SETUSER é usado para assumir a identidade de outro usuário, todo objeto que o usuário da representação cria é de propriedade do usuário representado. Por exemplo, se o proprietário do banco de dados assumir a identidade do usuário Marina e criar uma tabela chamada orders, a tabela orders será de propriedade de Marina, e não do administrador do sistema.

SETUSER permanece em vigor até que outra instrução SETUSER seja emitida ou até que o banco de dados atual seja alterado com a instrução USE.

Nota

Se SETUSER WITH NORESET for usado, o proprietário do banco de dados ou administrador do sistema deverá fazer logoff e logon novamente para restabelecer seus próprios direitos.

Permissões

Exige associação à função de servidor fixa sysadmin ou deve ser o proprietário do banco de dados. A associação à função de banco de dados fixa db_owner não é suficiente

Exemplos

O exemplo a seguir mostra como o proprietário do banco de dados pode adotar a identidade de outro usuário. O usuário mary criou uma tabela chamada computer_types. Usando SETUSER, o proprietário do banco de dados representa mary para conceder ao usuário joe acesso à tabela computer_types e, em seguida, redefine sua própria identidade.

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

Consulte Também

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