Udostępnij za pośrednictwem


SESSION_USER (Transact-SQL)

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

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

SESSION_USER

Zwracane typy

nvarchar(128)

Uwagi

SESSION_USER za pomocą domyślnego ograniczenia w instrukcji CREATE TABLE lub ALTER TABLE lub używać go jako wszelkich standardowych funkcja.SESSION_USER można wstawić do tabela , jeśli nie określono żadnej wartości domyślnej.Ta funkcja nie przyjmuje żadnych argumentów.SESSION_USER mogą być używane w kwerendach.

Jeśli po przełączanie kontekstunosi nazwę SESSION_USER, SESSION_USER zwróci nazwę użytkownika w kontekście personifikowanego.

Przykłady

A.Zwraca nazwę użytkownika w bieżącej sesjaprzy użyciu SESSION_USER

Poniższy przykład deklaruje zmienną jako nchar, przypisuje bieżącą wartość SESSION_USER do zmiennej i 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

To jest zestaw wyników podczas sesja użytkownika Surya:

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

This session's current user is: Surya

(1 row(s) affected)

B.Ograniczenia DOMYOLNE przy użyciu SESSION_USER

Poniższy przykład tworzy tabela , która korzysta z SESSION_USER jako DEFAULT ograniczenie nazwisko osoby, która rejestruje przyjęcia dostawy.

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

Dodać do tabela rekordy zostaną ostemplowane nazwy użytkownika bieżącego użytkownika.W tym przykładzie Wanida, Sylvester, i Alejandro sprawdzić odbiór przesyłki.Mogą to być emulowane przez przełączanie kontekstu użytkownika za pomocą 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

Oto zestaw wyników.

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)