SETUSER (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Ermöglicht einem Mitglied der festen Serverrolle sysadmin oder dem Besitzer einer Datenbank die Identität eines anderen Benutzers anzunehmen.

Wichtig

SETUSER ist nur für Abwärtskompatibilität enthalten. SETUSERmöglicherweise nicht mehr in einer zukünftigen Version von SQL Server unterstützt werden. Stattdessen wird die Verwendung von EXECUTE AS empfohlen.

Transact-SQL-Syntaxkonventionen

Syntax

  
SETUSER [ 'username' [ WITH NORESET ] ]   

Argumente

'username'
Dies ist der Name eines SQL Server- oder Windows-Benutzers in der aktuellen Datenbank, dessen Identität angenommen werden soll. Wird username nicht angegeben, so wird die ursprüngliche Identität des Systemadministrators oder des Datenbankbesitzers, der eine fremde Identität angenommen hat, wiederhergestellt.

MIT NORESET
Legt fest, dass nachfolgende SETUSER Anweisungen (ohne angegebenen Benutzernamen) die Benutzeridentität nicht auf Systemadministrator oder Datenbankinhaber zurücksetzen dürfen.

Bemerkungen

SETUSER kann von einem Mitglied der Sysadmin-Fixed-Server-Rolle oder dem Eigentümer einer Datenbank verwendet werden, um die Identität eines anderen Benutzers anzunehmen, um die Berechtigungen des anderen Benutzers zu testen. Die Mitgliedschaft in der festen Datenbankrolle db_owner reicht nicht aus.

Nur mit SQL Server-Nutzern zu verwendenSETUSER. SETUSERwird bei Windows-Nutzern nicht unterstützt. Wenn SETUSER verwendet wurde, um die Identität eines anderen Benutzers anzunehmen, gehören alle Objekte, die der imitierende Nutzer erstellt, dem jeweiligen Benutzer. Wenn der Datenbankbesitzer beispielsweise die Identität der Benutzerin Margaret annimmt und eine Tabelle namens orders erstellt, gehört diese orders-Tabelle der Benutzerin Margaret und nicht dem Systemadministrator.

SETUSER bleibt in Kraft, bis eine weitere SETUSER Aussage ausgegeben wird oder die aktuelle Datenbank mit der USE-Anweisung geändert wird.

Hinweis

Wenn SETUSER WITH NORESET verwendet wird, muss der Datenbankbesitzer oder Systemadministrator sich abmelden und dann wieder einloggen, um seine eigenen Rechte wiederherzustellen.

Berechtigungen

Setzt die Mitgliedschaft in der festen Serverrolle sysadmin oder den Besitz der Datenbank voraus. Die Mitgliedschaft in der festen Datenbankrolle db_owner reicht nicht aus.

Beispiele

Das folgende Beispiel zeigt, wie der Datenbankbesitzer die Identität eines anderen Benutzers annehmen kann. Die Benutzerin mary hat eine Tabelle namens computer_types erstellt. Durch die Verwendung SETUSERvon , gibt mary sich der Datenbankbesitzer aus, um dem Benutzer joe Zugriff auf die computer_types Tabelle zu gewähren, und setzt dann seine eigene Identität zurück.

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

Weitere Informationen

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