SYSTEM_USER (Transact-SQL)
Gilt für: SQL Server Azure SQL verwaltete Instanz Azure Synapse Analytics Analytics 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
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 sehen Sie das Ergebnis.
----------------------------------------------------------
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 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 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)