Freigeben über


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)