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