CURRENT_USER (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzAzure Synapse AnalyticsSQL-Analyseendpunkt in Microsoft FabricLagerhaus in Microsoft FabricSQL-Datenbank in Microsoft Fabric

Diese Funktion gibt den Namen des aktuellen Benutzers zurück. Diese Funktion ist gleichbedeutend mit USER_NAME().

Transact-SQL-Syntaxkonventionen

Syntax

CURRENT_USER  

Rückgabetypen

sysname

Bemerkungen

CURRENT_USER gibt den Namen des aktuellen Sicherheitskontexts zurück. Wird CURRENT_USER ausgeführt, nachdem der Kontext über einen Aufruf von EXECUTE AS gewechselt wurde, gibt CURRENT_USER den Namen des gewechselten Identitätskontexts zurück. Falls ein Windows-Prinzipal über eine Mitgliedschaft in einer Gruppe auf die Datenbank zugegriffen hat, gibt CURRENT_USER den Namen des Windows-Prinzipals anstelle des Gruppennamens zurück.

Weitere Informationen dazu, wie der Anmeldename des aktuellen Benutzers zurückgegeben werden kann, finden Sie unter SUSER_NAME (Transact-SQL) und SYSTEM_USER (Transact-SQL).

Beispiele

A. Verwenden von CURRENT_USER zur Rückgabe des aktuellen Benutzernamens

In diesem Beispiel wird der Name des aktuellen Benutzers zurückgegeben.

SELECT CURRENT_USER;  
GO  

B. Verwendung von CURRENT_USER als Einschränkung DEFAULT

In diesem Beispiel wird eine Tabelle erstellt, die CURRENT_USER als DEFAULT-Einschränkung für die order_person-Spalte in einer Zeile mit Verkaufszahlen verwendet.

Note

In Azure SQL-Datenbank und SQL Database in Microsoft Fabric ist die Anweisung USE nicht verfügbar. Stattdessen verbinden Sie sich direkt mit der vorgesehenen Datenbank und führen Sie den Rest des Codebeispiels aus.

USE AdventureWorks2022;  
GO  
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES  
      WHERE TABLE_NAME = 'orders22')  
   DROP TABLE orders22;  
GO  
SET NOCOUNT ON;  
CREATE TABLE orders22  
(  
order_id int IDENTITY(1000, 1) NOT NULL,
cust_id  int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
order_amt money NOT NULL,
order_person char(30) NOT NULL DEFAULT CURRENT_USER
);  
GO  

In diesem Beispiel wird ein Datensatz in die Tabelle eingefügt. Die Benutzerin mit dem Namen Wanida führt diese Anweisungen aus.

INSERT orders22 (cust_id, order_amt)  
VALUES (5105, 577.95);  
GO  
SET NOCOUNT OFF;  
GO  

In dieser Abfrage werden alle Informationen in der orders22-Tabelle ausgewählt.

SELECT * FROM orders22;  
GO  

Hier sehen Sie das Ergebnis.

order_id    cust_id     order_date           order_amt    order_person
----------- ----------- -------------------- ------------ ------------
1000        5105        2005-04-03 23:34:00  577.95       Wanida
  
(1 row(s) affected)

C. Verwenden von CURRENT_USER aus einem Kontext, dessen Identität angenommen wurde

In diesem Beispiel führt die Benutzerin Wanida den folgenden Transact-SQL-Code aus, um sich als Benutzer „Arnalfo“ auszugeben.

SELECT CURRENT_USER;  
GO  
EXECUTE AS USER = 'Arnalfo';  
GO  
SELECT CURRENT_USER;  
GO  
REVERT;  
GO  
SELECT CURRENT_USER;  
GO  

Hier sehen Sie das Ergebnis.

Wanida
Arnalfo
Wanida