Aracılığıyla paylaş


SESSION_USER (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalitik Platform Sistemi (PDW)Microsoft Fabric'te SQL veritabanı

SESSION_USER, mevcut veritabanındaki mevcut bağlamın kullanıcı adını döndürür.

Transact-SQL söz dizimi kuralları

Sözdizimi

SESSION_USER  

Dönüş Türleri

nvarchar(128)

Açıklamalar

CREATE TABLE veya ALTER TABLE ifadelerinde DEFAULT kısıtlamaları olan SESSION_USER kullanın veya herhangi bir standart fonksiyon olarak kullanın. SESSION_USER varsayılan değer belirtilmediğinde tabloya eklenebilir. Bu işlev bağımsız değişken almaz. SESSION_USER sorgularda kullanılabilir.

Eğer SESSION_USER bağlam değişiminden sonra çağrılırsa, SESSION_USER taklit edilen bağlamın kullanıcı adını döndürür.

Örnekler

A. Mevcut oturumun kullanıcı adını iade etmek için SESSION_USER kullanmak

Aşağıdaki örnek, bir değişkeni şu şekilde ncharilan eder, o değişkene mevcut değer SESSION_USER atar ve ardından değişkeni metin açıklamasıyla yazdırır.

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

Bu, oturum kullanıcısı şu durumlarda Suryasonuç kümesidir:

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

(1 row(s) affected)

B. DEFAULT kısıtlamalarla SESSION_USER kullanımı

Aşağıdaki örnek, bir gönderiyi kaydeden kişinin ismini kısıtlama olarak kullanan bir tablo SESSION_USERDEFAULT oluşturur.

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  

Tabloya eklenen kayıtlar, mevcut kullanıcının kullanıcı adıyla damgalanır. Bu örnekte, Wanida, Sylvester, ve Alejandro sevkiyatların alındığını doğrulayın. Bu, kullanıcı bağlamını değiştirerek 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şağıdaki sorgu, tablodan deliveries3 tüm bilgileri seçer.

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  

Sonuç kümesi aşağıdadır.

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)

Örnekler: Azure Synapse Analytics ve Analytics Platform Sistemi (PDW)

C: Mevcut oturumun kullanıcı adını döndürmek için SESSION_USER kullanmak

Aşağıdaki örnek, mevcut oturum için oturum kullanıcısını döndürür.

SELECT SESSION_USER;  

Ayrıca Bkz.

ALTER TABLE (Transact-SQL)
TABLO OLUŞTUR (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
Sistem İşlevleri (Transact-SQL)
KULLANICI (Transact-SQL)
USER_NAME (Transact-SQL)