Teilen über


USER_NAME (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric

Gibt einen Datenbank-Benutzernamen über eine angegebene ID oder den aktuellen Benutzernamen zurück.

Transact-SQL-Syntaxkonventionen

Syntax

USER_NAME ( [ ID ] )

Argumente

ID

Die einem Datenbankbenutzer zugeordnete Identifikationsnummer, wie in sys.database_principals aufgeführt. ID ist vom Datentyp int. Die Klammern sind erforderlich.

Rückgabetypen

nvarchar(128)

Hinweise

Wenn ID nicht angegeben ist, wird der aktuelle Benutzer im aktuellen Kontext vermutet. Wenn der Parameter das Wort NULL enthalten ist, wird USER_NAME NULL zurückgegeben. Wenn USER_NAME aufgerufen wird, ohne nach einer EXECUTE AS-Anweisung eine ID anzugeben, gibt USER_NAME den Namen des Benutzers zurück, dessen Identität angenommen wurde. Falls ein Windows-Prinzipal über eine Mitgliedschaft in einer Gruppe auf die Datenbank zugreift, gibt USER_NAME den Namen des Windows-Prinzipals anstelle der Gruppe zurück.

Obwohl die USER_NAME()-Funktion in Azure SQL-Datenbank unterstützt wird, wird die Verwendung von EXECUTE AS USER = USER_NAME(n) nicht in Azure SQL-Datenbank unterstützt.

Beispiele

A. Verwenden von USER_NAME() zum Identifizieren einer Benutzer-ID

Im folgenden Beispiel wird der Benutzername für die Benutzer-ID 13 zurückgegeben, wie in sys.database_principals aufgeführt.

SELECT USER_NAME(13);  
GO  

B. Verwenden von USER_NAME ohne ID

Das folgende Beispiel sucht nach dem Namen des aktuellen Benutzers, ohne eine ID anzugeben.

SELECT USER_NAME();  
GO  

Im Folgenden wird das Resultset für einen Benutzer aufgeführt, der Mitglied der festen sysadmin-Serverrolle ist:

dbo  

C. Verwenden von USER_NAME in der WHERE-Klausel

Das folgende Beispiel findet in der sys.database_principals-Tabelle diejenige Zeile, in der der Name mit dem Ergebnis der USER_NAME-Systemfunktion (angewendet auf Benutzer-ID 1) übereinstimmt.

SELECT name FROM sys.database_principals WHERE name = USER_NAME(1);  
GO  

Hier sehen Sie das Ergebnis.

name  
------------------------------  
dbo  
  
(1 row(s) affected)

D: Aufrufen von USER_NAME während des Identitätswechsels mit EXECUTE AS

Das folgende Beispiel zeigt, wie sich USER_NAME während des Identitätswechsels verhält.

EXECUTE AS wird auf Microsoft Fabric derzeit nicht unterstützt.

Achtung

Führen Sie beim Testen mit EXECUTE AS immer ein Skript von REVERT aus, dem Sie folgen möchten.

SELECT USER_NAME();  
GO  
EXECUTE AS USER = 'Zelig';  
GO  
SELECT USER_NAME();  
GO  
REVERT;  
GO  
SELECT USER_NAME();  
GO  

Hier sehen Sie das Ergebnis.

-------------
dbo  

-------------
Zelig  

-------------
dbo  

Beispiele: Azure Synapse Analytics und Analytics-Plattformsystem (PDW)

E. Verwenden von USER_NAME ohne ID

Das folgende Beispiel sucht nach dem Namen des aktuellen Benutzers, ohne eine ID anzugeben.

SELECT USER_NAME();  

Nachfolgend finden Sie das Resultset für einen zum aktuellen Zeitpunkt angemeldeten Benutzer.

User7                              

F. Verwenden von USER_NAME in der WHERE-Klausel

Das folgende Beispiel findet in der sysusers-Tabelle diejenige Zeile, in der der Name mit dem Ergebnis der USER_NAME-Systemfunktion (angewendet auf Benutzer-ID 1) übereinstimmt.

SELECT name FROM sysusers WHERE name = USER_NAME(1);  

Hier sehen Sie das Ergebnis.

name                             
------------------------------   
User7