EXECUTE AS ou SETUSER
Dans SQL Server, le contexte d'exécution d'une chaîne, d'une commande ou d'un module peut être défini explicitement à l'aide de l'instruction EXECUTE AS. EXECUTE AS remplace l'instruction SETUSER. Pour plus d'informations sur le basculement de contexte, consultez Description du basculement de contexte.
Comparaison des fonctionnalités de basculement de contexte
Par rapport à l'instruction SETUSER, EXECUTE AS présente les avantages suivants :
Les entités de sécurité de serveur ou de base de données autres que sa ou dbo peuvent appeler EXECUTE AS.
L'utilisateur qui appelle l'instruction EXECUTE AS doit posséder des autorisations IMPERSONATE sur l'entité de sécurité cible.
SETUSER est limitée aux membres du rôle serveur fixe sysadmin ou du rôle de base de données fixe db_owner.
L'étendue de l'emprunt d'identité est définie explicitement dans l'instruction.
L'entité de sécurité spécifiée est définie en tant que LOGIN (emprunt d'identité de niveau serveur) ou USER (emprunt d'identité de niveau base de données).
L'étendue de l'emprunt d'identité dans l'instruction SETUSER est implicite. Si l'instruction est appelée par un membre de sysadmin, l'emprunt d'identité de niveau serveur est utilisé. Si l'instruction est appelée par un compte qui est dbo, l'emprunt d'identité de niveau base de données est utilisé.
L'emprunt d'identité demeure en vigueur jusqu'à ce que l'un des événements suivants se produise :
La session est supprimée.
Le contexte est basculé vers une autre connexion ou un autre utilisateur.
Le contexte d'exécution antérieur est rétabli.
Avec SETUSER, l'emprunt d'identité demeure en vigueur jusqu'à ce que l'un des événements suivants se produise :
Une autre instruction SETUSER est émise.
La base de données active est modifiée avec l'instruction USE par un compte qui est dbo ou membre du rôle serveur fixe sysadmin.
Vous pouvez créer une pile de contexte d'exécution en appelant l'instruction EXECUTE AS plusieurs fois via diverses entités de sécurité. Lorsqu'elle est appelée, l'instruction REVERT bascule le contexte vers la connexion ou l'utilisateur appartenant au niveau supérieur suivant de la pile de contextes. Pour plus d'informations, consultez EXECUTE AS (Transact-SQL).
SETUSER ne permet pas de créer une pile de contexte d'exécution.
Rétablissement d'un contexte antérieur
EXECUTE AS
Utilisez l'instruction REVERT pour rétablir le contexte antérieur. L'appelant de l'instruction REVERT doit appartenir à la base de données où l'emprunt d'identité s'est produit.
SETUSER
Pour revenir au contexte antérieur, utilisez l'instruction SETUSER sans spécifier de nom d'utilisateur.