SYSTEM_USER (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

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  

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.

Rückgabetypen

nvarchar(128)

Hinweise

Sie können die SYSTEM_USER-Funktion mit DEFAULT-Einschränkungen in den Anweisungen CREATE TABLE und 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 der Kontext mithilfe der EXECUTE AS-Anweisung gewechselt wurde, gibt SYSTEM_USER den Namen des Kontexts zurück, dessen Identität angenommen wurde.

EXECUTE AS kann nicht mit der SYSTEM_USER-Funktion verwendet werden.

Azure SQL-Datenbank: Die Anweisung SYSTEM_USER unterstützt nicht die 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 ist das Resultset.

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

(1 row(s) affected)

B. Verwenden von SYSTEM_USER mit DEFAULT-Einschränkungen

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

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 und Analytics-Plattformsystem (PDW)

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;  

Weitere Informationen

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
Systemfunktionen (Transact-SQL)
USER (Transact-SQL)