Megosztás a következőn keresztül:


SESSION_USER (Transact-SQL)

Vonatkozik a következőkre:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitikai Platform System (PDW)SQL adatbázis a Microsoft Fabric-ben

SESSION_USER visszaadja az aktuális adatbázis aktuális kontextusának felhasználónevét.

Transact-SQL szintaxis konvenciók

Szemantika

SESSION_USER  

Visszatérési típusok

nvarchar(128)

Megjegyzések

Használd SESSION_USER DEFAULT korlátokkal a CREATE TABLE vagy ALTER TABLE utasításokban, vagy bármilyen szabványos függvényként használd. SESSION_USER beilleszthető egy táblába, ha nincs alapértelmezett érték. Ez a függvény nem vesz fel argumentumokat. SESSION_USER használható lekérdezésekhez.

Ha SESSION_USER kontextusváltás után hívják, akkor SESSION_USER visszaadja az imidentált kontextus felhasználónevét.

Példák

A. SESSION_USER használata a jelenlegi ülés felhasználónevének visszaadására

A következő példa egy változót úgy jelöl, mint nchar, a változó aktuális értékét SESSION_USER rendeli hozzá a változóhoz, majd kinyomtatja a változót szöveges leírással.

DECLARE @session_usr NCHAR(30);  
SET @session_usr = SESSION_USER;  
SELECT 'This session''s current user is: '+ @session_usr;  
GO  

Ez az eredményhalmaz, ha a session felhasználó a Suryakövetkezőké:

--------------------------------------------------------------
This session's current user is: Surya

(1 row(s) affected)

B. SESSION_USER használata ALAPÉRTELMEZETT korlátokkal

A következő példa egy táblázatot hoz létre, amely SESSION_USER korlátozásként DEFAULT használja annak a személynek a nevét, aki rögzíti a szállítmány beérkezését.

USE AdventureWorks2022;  
GO  
CREATE TABLE deliveries3  
(  
 order_id INT IDENTITY(5000, 1) NOT NULL,  
 cust_id  INT NOT NULL,  
 order_date SMALLDATETIME NOT NULL DEFAULT GETDATE(),  
 delivery_date SMALLDATETIME NOT NULL DEFAULT   
    DATEADD(dd, 10, GETDATE()),  
 received_shipment NCHAR(30) NOT NULL DEFAULT SESSION_USER  
);  
GO  

A táblázatba hozzáadott rekordokat a jelenlegi felhasználó felhasználónevével bélyegezik. Ebben a példában Wanida, Sylvester, és Alejandro ellenőrizd a szállítmányok átvételét. Ez emulálható a felhasználói kontextus váltásával .EXECUTE AS

EXECUTE AS USER = 'Wanida'  
INSERT deliveries3 (cust_id)  
VALUES (7510);  
INSERT deliveries3 (cust_id)  
VALUES (7231);  
REVERT;  
EXECUTE AS USER = 'Sylvester'  
INSERT deliveries3 (cust_id)  
VALUES (7028);  
REVERT;  
EXECUTE AS USER = 'Alejandro'  
INSERT deliveries3 (cust_id)  
VALUES (7392);  
INSERT deliveries3 (cust_id)  
VALUES (7452);  
REVERT;  
GO  

A következő lekérdezés választja ki az összes információt a deliveries3 táblázatból.

SELECT order_id AS 'Order #', cust_id AS 'Customer #',   
   delivery_date AS 'When Delivered', received_shipment   
   AS 'Received By'  
FROM deliveries3  
ORDER BY order_id;  
GO  

Itt van az eredmények összessége.

Order #   Customer #  When Delivered       Received By
--------  ----------  -------------------  -----------
5000      7510        2005-03-16 12:02:14  Wanida
5001      7231        2005-03-16 12:02:14  Wanida
5002      7028        2005-03-16 12:02:14  Sylvester
5003      7392        2005-03-16 12:02:14  Alejandro
5004      7452        2005-03-16 12:02:14  Alejandro

(5 row(s) affected)

Példák: Azure Synapse Analytics and Analytics Platform System (PDW)

C: A SESSION_USER használata a jelenlegi ülésszak felhasználónevének visszaadására

A következő példa adja vissza a jelenlegi munkamenet felhasználóját.

SELECT SESSION_USER;  

Lásd még:

ALTERNATÍV TÁBLÁZAT (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
Rendszerfunkciók (Transact-SQL)
FELHASZNÁLÓ (Transact-SQL)
USER_NAME (Transact-SQL)