Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL Database w Microsoft Fabric
SESSION_USER zwraca nazwę użytkownika bieżącego kontekstu w bieżącej bazie danych.
Transact-SQL konwencje składni
Składnia
SESSION_USER
Typy zwracane
nvarchar(128)
Uwagi
Używaj SESSION_USER z ograniczeniami DEFAULT w instrukcjach CREATE TABLE lub ALTER TABLE, albo używaj go jako dowolnej standardowej funkcji. SESSION_USER można wstawić do tabeli, gdy nie podano wartości domyślnej. Ta funkcja nie przyjmuje żadnych argumentów. SESSION_USER można wykorzystać w zapytaniach.
Jeśli SESSION_USER zostanie wywołane po zmianie kontekstu, SESSION_USER zwróci nazwę użytkownika podszytego kontekstu.
Przykłady
A. Używając SESSION_USER do zwracania nazwy użytkownika bieżącej sesji
Poniższy przykład deklaruje zmienną jako , ncharprzypisuje tej zmiennej aktualną wartość SESSION_USER , a następnie drukuje tę zmienną z opisem tekstowym.
DECLARE @session_usr NCHAR(30);
SET @session_usr = SESSION_USER;
SELECT 'This session''s current user is: '+ @session_usr;
GO
Jest to zbiór wyników, gdy użytkownik sesji jest :Surya
--------------------------------------------------------------
This session's current user is: Surya
(1 row(s) affected)
B. Używanie SESSION_USER z ograniczeniami DOMYŚLNYMI
Poniższy przykład tworzy tabelę, która jako ograniczenie DEFAULT używa SESSION_USER imienia osoby rejestrującej odbiór przesyłki.
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
Rekordy dodane do tabeli będą oznaczane nazwą użytkownika aktualnego użytkownika. W tym przykładzie , WanidaSylvester, oraz weryfikują Alejandro odbiór przesyłek. Można to emulować, zmieniając kontekst 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ące zapytanie wybiera wszystkie informacje z tabeli deliveries3 .
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)
Przykłady: Azure Synapse Analytics and Analytics Platform System (PDW)
C: Używanie SESSION_USER do zwracania nazwy użytkownika bieżącej sesji
Poniższy przykład zwraca użytkownika sesji dla bieżącej sesji.
SELECT SESSION_USER;
Zobacz też
ZMIEŃ TABELĘ (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
Funkcje systemowe (Transact-SQL)
UŻYTKOWNIK (Transact-SQL)
USER_NAME (Transact-SQL)