Aracılığıyla paylaş


SESSION_USER (Transact-sql)

SESSION_USER, geçerli veritabanında geçerli içeriği kullanıcı adını döndürür.

Konu bağlantısı simgesi Transact-SQL Sözdizim Kuralları

Sözdizimi

SESSION_USER

Dönüş Türleri

nvarchar(128)

Açıklamalar

create table veya alter table deyimleri default kısıtlamaları ile SESSION_USER kullanma veya herhangi bir standart fonksiyon olarak kullanabilirsiniz. Varsayılan değer belirtildiğinde SESSION_USER tabloya eklenebilir. Bu işlev bağımsız değişken alır. SESSION_USER sorgularda kullanılabilir.

SESSION_USER bağlam anahtarından sonra çağrılırsa, SESSION_USER bağlamı Kimliğine bürünülen kullanıcı adını döndürür.

Örnekler

A.Geçerli oturum kullanıcı adını döndürmek için SESSION_USER kullanma

Aşağıdaki örnek bir değişken olarak bildirir nchar, geçerli değeri atar SESSION_USERiçin bu değişkeni ve bir metin açıklaması değişkenle yazdırır.

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

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

Bu oturumun kullanıcı olduğunda ayarlamak sonucudur Surya:

--------------------------------------------------------------

This session's current user is: Surya

(1 row(s) affected)

B.SESSION_USER default kısıtlamaları ile kullanma

Aşağıdaki örnek, kullanan bir tablo oluşturur SESSION_USERgibi bir DEFAULTSevkiyat alındığını kaydeden kişinin adını kısıtlaması.

USE AdventureWorks2012;
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

USE AdventureWorks2012;
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ı geçerli kullanıcı adı ile damgalanmış olacaktır. Bu örnekte, Wanida, Sylvester, ve Alejandroalış irsaliyelerini doğrulayın. Bu kullanıcı bağlamı kullanarak geçiş yaparak taklit 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

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

Tüm bilgileri aşağıdaki sorgu seçer deliveries3tablosu.

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

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 buradadı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)

Ayrıca bkz.

Başvuru

ALTER TABLE (Transact-SQL)

Tablo (Transact-sql) oluştur

CURRENT_TIMESTAMP (Transact-sql)

current_user (Transact-sql)

system_user (Transact-sql)

Sistem işlevler (Transact-sql)

USER (Transact-sql)

col_name (Transact-sql)