USER_NAME (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)SQL Analytics-Endpunkt in Microsoft FabricWarehouse in Microsoft Fabric

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

Transact-SQL-Syntaxkonventionen

Syntax

USER_NAME ( [ ID ] )

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

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_NAMENULL 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 ist das Resultset.

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 ist das Resultset.

-------------
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 ist das Resultset.

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