Freigeben über


SYSTEM_USER (Transact-SQL)

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

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

SYSTEM_USER

Rückgabetypen

nchar

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 an SQL Server angemeldet ist, gibt SYSTEM_USER den Windows-Anmeldenamen im Format DOMAIN\user_login_name zurück. Ist der aktuelle Benutzer jedoch über die SQL Server-Authentifizierung an SQL Server angemeldet, gibt SYSTEM_USER den SQL Server-Anmeldenamen zurück, wie 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.

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

Dies 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 AdventureWorks;
GO
CREATE TABLE 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_Tracking (Rep_id)
VALUES (151)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '5/15/98')
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '6/20/98')
INSERT Sales_Tracking (Rep_id)
VALUES (21392)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '11/03/98')
GO

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

SELECT * FROM Sales_Tracking ORDER BY Rep_id;
GO

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