SETUSER (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Permet à un membre du rôle serveur fixe sysadmin ou le propriétaire d’une base de données d’emprunter l’identité d’un autre utilisateur.

Important

L'instruction SETUSER est incluse pour des raisons de compatibilité descendante uniquement. SETUSER peut-être plus pris en charge dans une version future de SQL Server. Nous vous recommandons d’utiliser EXECUTE AS à la place.

Conventions de la syntaxe Transact-SQL

Syntaxe

  
SETUSER [ 'username' [ WITH NORESET ] ]   

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

'username'
Est le nom d'un utilisateur SQL Server ou Windows dans la base de données active dont l'identité est empruntée. Quand aucun username n’est spécifié, l’identité d’origine de l’administrateur système ou du propriétaire de la base de données qui emprunte l’identité de l’utilisateur est réinitialisée.

WITH NORESET
Spécifie que les instructions SETUSER suivantes (sans username spécifié) ne doivent pas réinitialiser l’identité de l’utilisateur avec l’administrateur système ou le propriétaire de la base de données.

Notes

L’instruction SETUSER peut être utilisée par un membre du rôle serveur fixe sysadmin ou le propriétaire de la base de données pour tester les autorisations d’un autre utilisateur en adoptant l’identité de ce dernier. L’appartenance au rôle de base de données fixe db_owner ne suffit pas.

Utilisez SETUSER uniquement avec des utilisateurs SQL Server. SETUSER n'est pas prise en charge avec les utilisateurs Windows. Lorsque l'instruction SETUSER est exécutée pour représenter un autre utilisateur, tout objet créé par l'utilisateur qui emprunte l'identité est la propriété de l'utilisateur représenté. Par exemple, si le propriétaire de la base de données utilise l’identité de l’utilisateur Margaret et crée une table appelée orders, la table orders est la propriété de Margaret, et non celle de l’administrateur système.

L'instruction SETUSER reste active jusqu'à ce qu'une autre instruction SETUSER soit exécutée ou jusqu'à ce que l'on change de base de données active à l'aide de l'instruction USE.

Notes

Si l'instruction SETUSER WITH NORESET est exécutée, le propriétaire de la base de données ou l'administrateur système doit rétablir ses propres droits en se déconnectant, puis en se connectant de nouveau.

Autorisations

Nécessite l’appartenance au rôle serveur fixe sysadmin ou doit être le propriétaire de la base de données. L’appartenance au rôle de base de données fixe db_owner ne suffit pas.

Exemples

L'exemple suivant montre comment le propriétaire d'une base de données peut prendre l'identité d'un autre utilisateur. L'utilisateur mary a créé une table appelée computer_types. À l'aide de l'instruction SETUSER, le propriétaire de la base de données représente mary pour autoriser l'utilisateur joe à accéder à la table computer_types, puis rétablit sa propre identité.

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

Voir aussi

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