Freigeben über


USER_NAME (Transact-SQL)

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

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

USER_NAME ( [ id ] )

Argumente

  • id
    Die ID, die einem Datenbankbenutzer zugeordnet ist. idist vom Datentyp int. Die Klammern sind erforderlich.

Rückgabetypen

nvarchar(256)

Hinweise

Wenn id nicht angegeben ist, wird der aktuelle Benutzer im aktuellen Kontext verwendet. Wenn das Wort NULL enthalten ist, wird 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.

Beispiele

A. Verwenden von USER_NAME

Im folgenden Beispiel wird der Benutzername für die Benutzer-ID 13 zurückgegeben.

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

(1 row(s) affected)

C. 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);
GO

Dies 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.

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

Dies ist das Resultset.

DBO

Zelig

DBO