SYSTEM_USER (Transact-SQL)

Platí na:SQL ServerAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytický platformový systém (PDW)

Umožňuje vložit systémově dodanou hodnotu aktuálního přihlášení do tabulky, pokud není uvedena žádná výchozí hodnota.

Transact-SQL konvence syntaxe

Syntax

SYSTEM_USER  

Návratové typy

nvarchar(128)

Remarks

Můžete použít funkci SYSTEM_USER s DEFAULT omezeními v příkazech CREATE TABLE and ALTER TABLE (a). Můžete ji také použít jako jakoukoli standardní funkci.

Pokud jsou uživatelské jméno a přihlašovací jméno odlišné, SYSTEM_USER vrátí přihlašovací jméno.

Pokud je současný uživatel přihlášen do SQL Server pomocí Windows autentizace, SYSTEM_USER vrátí Windows přihlašovací identifikační jméno ve formuláři: DOMAIN\user_login_name. Pokud je však současný uživatel přihlášen do SQL Server pomocí SQL Server autentizace, SYSTEM_USER vrátí SQL Server přihlašovací jméno, například WillisJo pro uživatele přihlášeného jako WillisJo.

SYSTEM_USER vrací název právě vykonávaného kontextu. Pokud EXECUTE AS byl výrok použit k přepnutí kontextu, SYSTEM_USER vrátí název napodobeného kontextu.

Nemůžeš EXECUTE AS SYSTEM_USER.

Azure SQL Database: Příkaz SYSTEM_USER nepodporuje provádění s použitím předstíraného bezpečnostního kontextu prostřednictvím EXECUTE AS.

Příklady

A. Použitím SYSTEM_USER k vrácení aktuálního uživatelského jména systému

Následující příklad deklaruje char proměnnou, uloží aktuální hodnotu proměnné SYSTEM_USER do proměnné a poté vytiskne hodnotu uloženou v proměnné.

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

Tady je soubor výsledků.

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

(1 row(s) affected)

B. Použití SYSTEM_USER s DEFAULT omezeními

Následující příklad vytváří tabulku s jako SYSTEM_USERDEFAULT omezením pro sloupec 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  

Následující dotaz vybírá všechny informace z tabulky Sales_Tracking :

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

Tady je soubor výsledků.

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)

Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)

C. Použitím SYSTEM_USER k vrácení aktuálního uživatelského jména systému

Následující příklad vrací aktuální hodnotu .SYSTEM_USER

SELECT SYSTEM_USER;  

Viz také

ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SESSION_USER (Transact-SQL)
Systémové funkce (Transact-SQL)
USER (Transact-SQL)