SESSION_USER (Transact-SQL)

SESSION_USER zwraca nazwę bieżącego kontekstu w bieżącej bazie danych.

Topic link iconKonwencje składni języka Transact-SQL

SESSION_USER

Zwracane typy

nvarchar(128)

Remarks

Użyj SESSION_USER z ograniczeniami DEFAULT w instrukcji CREATE tabela lub ALTER tabela lub użyć go jako wszelkich standardowych funkcja.SESSION_USER mogą być wstawiane do tabela, gdy określono żadnej wartości domyślnej.Ta funkcja ma żadnych argumentów.SESSION_USER mogą być używane w kwerendach.

Jeśli SESSION_USER nazywany jest przełącznikiem kontekstu, SESSION_USER zwróci nazwę użytkownika w kontekście personifikowanego.

Przykłady

A.Za pomocą SESSION_USER zwraca nazwę użytkownika z bieżącej sesja

W poniższym przykładzie deklaruje zmienną jako nchar, przypisuje bieżącą wartość SESSION_USER do tej zmiennej a następnie drukuje zmienna o opis tekstowy.

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

Jest to wynikiem ustawione podczas sesja użytkownika Surya:

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

(1 row(s) affected)

B.Za pomocą SESSION_USER z ograniczeniami DEFAULT

Poniższy przykład tworzy tabela, która korzysta z SESSION_USER jako DEFAULT warunek ograniczający nazwy osoby, która rejestruje potwierdzenie wysyłki.

USE AdventureWorks
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

Rekordy dodawane do tabela zostanie opatrzone nazwą użytkownika bieżącego użytkownika.W tym przykładzie Wanida, Sylvester, a Alejandro sprawdzenia potwierdzenia wysyłek. Może to być emulowany przez przełączenie kontekstu użytkownika przy użyciu 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

Następująca kwerenda wybiera wszystkie informacje z deliveries3 Tabela.

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

Here is the result set.

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)