Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Аналитическая платформа (PDW)
SQL база данных в Microsoft Fabric
Функция 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)
ПОЛЬЗОВАТЕЛЬ (Transact-SQL)
USER_NAME (Transact-SQL)