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)