SETUSER (Transact-SQL)

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

Important

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

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

SETUSER [ 'username' [ WITH NORESET ] ] 

Arguments

  • 'username'
    Nom d'un utilisateur SQL Server ou Windows dans la base de données actuelle dont l'identité est empruntée. Lorsqu'aucun username n'est spécifié, l'identité originale 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 qui vont suivre, et qui n'indiquent pas de username, ne doivent pas réaffecter l'identité utilisateur à l'administrateur système ou au 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 du rôle de base de données fixe db_owner pour prendre l'identité d'un autre utilisateur afin de tester les autorisations de ce dernier.

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 représente 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.

[!REMARQUE]

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

Requiert l'appartenance au rôle serveur fixe sysadmin ou au rôle de base de données fixe db_owner.

Exemple

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
SETUSER