Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Analytics Platform System (PDW)
databáze SQL v Microsoft Fabric
SESSION_USER vrací uživatelské jméno aktuálního kontextu v aktuální databázi.
Syntaxe
SESSION_USER
Návratové typy
nvarchar(128)
Poznámky
Použijte SESSION_USER s omezeními DEFAULT buď v příkazech CREATE TABLE nebo ALTER TABLE, nebo je použijte jako jakoukoli standardní funkci. SESSION_USER lze vložit do tabulky, pokud není zadána výchozí hodnota. Tato funkce nepřijímá žádné argumenty. SESSION_USER lze použít v dotazech.
Pokud je SESSION_USER vyvolán po přepnutí kontextu, SESSION_USER vrátí uživatelské jméno impersonovaného kontextu.
Examples
A. Použitím SESSION_USER k vrácení uživatelského jména aktuální relace
Následující příklad deklaruje proměnnou jako nchar, přiřadí aktuální hodnotu této SESSION_USER proměnné a poté vytiskne proměnnou s textovým popisem.
DECLARE @session_usr NCHAR(30);
SET @session_usr = SESSION_USER;
SELECT 'This session''s current user is: '+ @session_usr;
GO
Toto je množina výsledků, když uživatel relace je Surya:
--------------------------------------------------------------
This session's current user is: Surya
(1 row(s) affected)
B. Použití SESSION_USER s VÝCHOZÍMI omezeními
Následující příklad vytváří tabulku, která používá SESSION_USER jako DEFAULT omezení jméno osoby, která zaznamenává přijetí zásilky.
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
Záznamy přidané do tabulky budou označeny uživatelským jménem aktuálního uživatele. V tomto příkladu , WanidaSylvester, a ověřte Alejandro přijetí zásilek. To lze emulovat přepnutím uživatelského kontextu 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
Následující dotaz vybírá všechny informace z tabulky 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
Tady je soubor výsledků.
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)
Příklady: Azure Synapse Analytics a Analytický platformový systém (PDW)
C: Používám SESSION_USER k vrácení uživatelského jména aktuální relace
Následující příklad vrací uživatele relace pro aktuální relaci.
SELECT SESSION_USER;
Viz také
ZMĚNIT TABULKU (Transact-SQL)
VYTVOŘIT TABULKU (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
Systémové funkce (Transact-SQL)
UŽIVATEL (Transact-SQL)
USER_NAME (Transact-SQL)