Поделиться через


SESSION_USER (Transact-SQL)

Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)

Функция SESSION_USER возвращает имя пользователя текущего контекста в текущей базе данных.

Соглашения о синтаксисе Transact-SQL

Синтаксис

SESSION_USER  

Типы возвращаемых данных

nvarchar(128)

Замечания

Функция SESSION_USER с ограничением DEFAULT используется в инструкциях CREATE TABLE или ALTER TABLE, либо как любая стандартная функция. Функцию SESSION_USER можно вставить в таблицу, если не задано значения по умолчанию. Эта функция не имеет аргументов. Функция SESSION_USER может использоваться в запросах.

Если функция SESSION_USER вызывается после переключения контекста, SESSION_USER возвращает имя пользователя олицетворенного контекста.

Примеры

А. Использование функции SESSION_USER для получения имени пользователя текущего сеанса

В следующем примере объявляется переменная типа nchar, ей присваивается текущее значение SESSION_USER, а затем эта переменная выводится на печать вместе с текстовым описанием.

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

Ниже представлен результирующий набор, если пользователем сеанса является Surya:

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

(1 row(s) affected)

B. Использование функции SESSION_USER с ограничениями DEFAULT

В следующем примере создается таблица, которая использует SESSION_USER как ограничение DEFAULT для имени лица, регистрирующего прием отгрузки.

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  

Записи, добавленные к таблице, будут помечены именем текущего пользователя. В этом примере Wanida, Sylvester и Alejandro проверяют прием отгрузок. Это можно эмулировать, переключив контекст пользователя с помощью инструкции 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  

Следующий запрос выбирает все данные из таблицы 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  

Вот результирующий набор.

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)

Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)

В. Использование функции SESSION_USER для получения имени пользователя текущего сеанса

В приведенном ниже примере возвращается пользователь текущего сеанса.

SELECT SESSION_USER;  

См. также

Инструкция ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
CURRENT_TIMESTAMP (Transact-SQL)
CURRENT_USER (Transact-SQL)
SYSTEM_USER (Transact-SQL)
Системные функции (Transact-SQL)
USER (Transact-SQL)
USER_NAME (Transact-SQL)