SYSTEM_USER (Transact-SQL)

Gilt für:SQL ServerAzureSQL Managed InstanceAzureSynapse Analytics

Ermöglicht das Einfügen eines vom System bereitgestellten Werts für den aktuellen Anmeldenamen in eine Tabelle, wenn kein Standardwert angegeben ist.

Transact-SQL-Syntaxkonventionen

Syntax

SYSTEM_USER  

Rückgabetypen

nvarchar(128)

Hinweise

Du kannst die Funktion SYSTEM_USER mit DEFAULT Einschränkungen in den CREATE TABLE und-Anweisungen ALTER TABLE verwenden. Sie können sie auch wie jede beliebige Standardfunktion verwenden.

Unterscheiden sich Benutzer- und Anmeldename, gibt SYSTEM_USER den Anmeldenamen zurück.

Wenn der aktuelle Benutzer über die Windows-Authentifizierung bei SQL Server angemeldet ist, gibt SYSTEM_USER den Windows-Anmeldenamen im folgenden Format zurück: DOMAIN\user_login_name. Wenn der aktuelle Benutzer jedoch über die SQL Server-Authentifizierung bei SQL Server angemeldet ist, gibt SYSTEM_USER den SQL Server-Anmeldenamen zurück, z. B. WillisJo für einen als WillisJo angemeldeten Benutzer.

SYSTEM_USER gibt den Namen des zurzeit ausgeführten Kontexts zurück. Wenn die EXECUTE AS Anweisung zum Kontextwechsel verwendet wurde, gibt SYSTEM_USER den Namen des imitierten Kontexts zurück.

Du kannst kein EXECUTE AS SYSTEM_USER.

Azure SQL-Datenbank: Die SYSTEM_USER-Anweisung unterstützt keine Ausführung mit einem imitierten Sicherheitskontext über EXECUTE AS.

Beispiele

A. Verwenden von SYSTEM_USER zur Rückgabe des aktuellen Systembenutzernamens

Im folgenden Beispiel wird eine char-Variable deklariert, der aktuelle Wert von SYSTEM_USER in der Variablen gespeichert und dann der in der Variablen gespeicherte Wert ausgegeben.

DECLARE @sys_usr CHAR(30);  
SET @sys_usr = SYSTEM_USER;  
SELECT 'The current system user is: '+ @sys_usr;  
GO  

Hier sehen Sie das Ergebnis.

----------------------------------------------------------
The current system user is: WillisJo

(1 row(s) affected)

B. Verwendung von SYSTEM_USER mit DEFAULT Nebenbedingungen

Im folgenden Beispiel wird eine Tabelle mit SYSTEM_USER als DEFAULT-Einschränkung für die SRep_tracking_user-Spalte erstellt.

USE AdventureWorks2022;  
GO  
CREATE TABLE Sales.Sales_Tracking  
(  
    Territory_id INT IDENTITY(2000, 1) NOT NULL,  
    Rep_id INT NOT NULL,  
    Last_sale DATETIME NOT NULL DEFAULT GETDATE(),  
    SRep_tracking_user VARCHAR(30) NOT NULL DEFAULT SYSTEM_USER  
);  
GO  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (151);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (293, '19980515');  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (27882, '19980620');  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (21392);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (24283, '19981130');  
GO  

Mit der folgenden Abfrage werden alle Informationen aus der Sales_Tracking-Tabelle ausgewählt:

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

Hier sehen Sie das Ergebnis.

Territory_id Rep_id Last_sale            SRep_tracking_user
-----------  ------ -------------------- ------------------
2000         151    Mar 4 1998 10:36AM   ArvinDak
2001         293    May 15 1998 12:00AM  ArvinDak
2003         21392  Mar 4 1998 10:36AM   ArvinDak
2004         24283  Nov 3 1998 12:00AM   ArvinDak
2002         27882  Jun 20 1998 12:00AM  ArvinDak
 
(5 row(s) affected)

Beispiele: Azure Synapse Analytics

C. Verwenden von SYSTEM_USER zur Rückgabe des aktuellen Systembenutzernamens

Im folgenden Beispiel wird der aktuelle Wert von SYSTEM_USER zurückgegeben.

SELECT SYSTEM_USER;