SETUSER (Transact-SQL)
Gilt für: SQL Server Azure 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 aus Gründen der Abwärtskompatibilität enthalten. SETUSER wird in einer künftigen Version von SQL Server möglicherweise nicht mehr unterstützt. Es empfiehlt sich, stattdessen EXECUTE AS zu verwenden.
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.
WITH NORESET
Gibt an, dass bei nachfolgenden SETUSER-Anweisungen (ohne Angabe von username) die ursprüngliche Identität des Systemadministrators bzw. Datenbankbesitzers nicht wiederhergestellt werden soll.
Bemerkungen
SETUSER kann von einem Mitglied der festen Serverrolle sysadmin oder dem Besitzer einer Datenbank verwendet werden, um die Identität eines anderen Benutzers zum Testen der Berechtigungen dieses Benutzers anzunehmen. Die Mitgliedschaft in der festen Datenbankrolle db_owner reicht nicht aus.
Verwenden Sie SETUSER nur für SQL Server-Benutzer. SETUSER wird nicht für Windows-Benutzer unterstützt. Wenn Sie mit SETUSER die Identität eines anderen Benutzers angenommen haben, gehören alle Objekte, die Sie unter seiner Identität erstellen, diesem 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 wirksam, bis eine andere SETUSER-Anweisung ausgeführt oder die aktuelle Datenbank mit der USE-Anweisung gewechselt wird.
Hinweis
Falls SETUSER WITH NORESET verwendet wird, muss der Datenbankbesitzer bzw. der Systemadministrator sich ab- und wieder anmelden, um seine ursprünglichen Berechtigungen 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. Mithilfe von SETUSER nimmt der Datenbankbesitzer die Identität von mary
an, um dem Benutzer joe
den Zugriff auf die computer_types
-Tabelle zu erteilen. Anschließend nimmt der Benutzer wieder seine eigene Identität an.
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)
USE (Transact-SQL)