SYSTEM_USER (Transact-SQL)

Gäller för:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalysplattformssystem (PDW)

Tillåter att ett systemtillhandahållet värde för den aktuella inloggningen infogas i en tabell när inget standardvärde specificeras.

Transact-SQL syntaxkonventioner

Syntax

SYSTEM_USER  

Returtyper

nvarchar(128)

Remarks

Du kan använda funktionen SYSTEM_USER med DEFAULT begränsningar i CREATE TABLE och-satserna ALTER TABLE . Du kan också använda den som vilken standardfunktion som helst.

Om användarnamnet och inloggningsnamnet skiljer sig åt, returnerar SYSTEM_USER inloggningsnamnet.

Om den nuvarande användaren är inloggad på SQL Server med Windows Authentication returnerar SYSTEM_USER Windows inloggningsidentifieringsnamn i formuläret: DOMAIN\user_login_name. Men om den nuvarande användaren är inloggad på SQL Server med SQL Server autentisering, returnerar SYSTEM_USER det SQL Server inloggningsidentifieringsnamnet, till exempel WillisJo för en användare inloggad som WillisJo.

SYSTEM_USER returnerar namnet på den för närvarande körande kontexten. Om påståendet EXECUTE AS har använts för att byta kontext returnerar SYSTEM_USER namnet på den imiterade kontexten.

Du kan inte EXECUTE AS göra SYSTEM_USER.

Azure SQL Database: SYSTEM_USER-satsen stöder inte exekvering med en imiterad säkerhetskontext genom EXECUTE AS.

Examples

A. Att använda SYSTEM_USER för att returnera det aktuella systemanvändarnamnet

Följande exempel deklarerar en char variabel, lagrar det aktuella värdet av SYSTEM_USER i variabeln och skriver sedan ut värdet som lagrats i variabeln.

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

Här är resultatet.

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

(1 row(s) affected)

B. Att använda SYSTEM_USER med DEFAULT begränsningar

Följande exempel skapar en tabell med SYSTEM_USER som DEFAULT begränsning för kolumnen SRep_tracking_user .

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  

Följande fråga väljer all information från Sales_Tracking tabellen:

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

Här är resultatet.

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)

Exempel: Azure Synapse Analytics and Analytics Platform System (PDW)

C. Att använda SYSTEM_USER för att returnera det aktuella systemanvändarnamnet

Följande exempel ger det aktuella värdet av SYSTEM_USER.

SELECT SYSTEM_USER;  

Se även

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