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


SYSTEM_USER (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure Azure Synapse Analytics Analytics Platform System (PDW)

Позволяет вставить в таблицу значение текущего имени входа, назначенного системой, если не задано значение по умолчанию.

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

Синтаксис

SYSTEM_USER  

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

nvarchar(128)

Замечания

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

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

Если текущий пользователь вошел в SQL Server с помощью проверки подлинности Windows, SYSTEM_USER возвращает имя идентификации входа Windows в форме: домен\user_login_name. Однако если текущий пользователь вошел в SQL Server с помощью проверки подлинности SQL Server, SYSTEM_USER возвращает имя идентификации входа SQL Server, например WillisJo для пользователя, вошедшего в систему.WillisJo

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

Использовать EXECUTE AS от имени SYSTEM_USER невозможно.

База данных SQL Azure. Оператор SYSTEM_USER не поддерживает выполнение с использованием олицетворенного контекста безопасности через EXECUTE AS.

Примеры

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

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

DECLARE @sys_usr CHAR(30);  
SET @sys_usr = SYSTEM_USER;  
SELECT 'The current system user is: '+ @sys_usr;  
GO  

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

----------------------------------------------------------
The current system user is: WillisJo

(1 row(s) affected)

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

В следующем примере создается таблица с функцией SYSTEM_USER в качестве ограничения DEFAULT для столбца SRep_tracking_user.

USE AdventureWorks2022;  
GO  
CREATE TABLE Sales.Sales_Tracking  
(  
    Territory_id INT IDENTITY(2000, 1) NOT NULL,  
    Rep_id INT NOT NULL,  
    Last_sale DATETIME NOT NULL DEFAULT GETDATE(),  
    SRep_tracking_user VARCHAR(30) NOT NULL DEFAULT SYSTEM_USER  
);  
GO  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (151);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (293, '19980515');  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (27882, '19980620');  
INSERT Sales.Sales_Tracking (Rep_id)  
VALUES (21392);  
INSERT Sales.Sales_Tracking (Rep_id, Last_sale)  
VALUES (24283, '19981130');  
GO  

Следующий запрос позволяет выбрать все данные из таблицы Sales_Tracking:

SELECT * FROM Sales_Tracking ORDER BY Rep_id;  
GO  

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

Territory_id Rep_id Last_sale            SRep_tracking_user
-----------  ------ -------------------- ------------------
2000         151    Mar 4 1998 10:36AM   ArvinDak
2001         293    May 15 1998 12:00AM  ArvinDak
2003         21392  Mar 4 1998 10:36AM   ArvinDak
2004         24283  Nov 3 1998 12:00AM   ArvinDak
2002         27882  Jun 20 1998 12:00AM  ArvinDak
 
(5 row(s) affected)

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

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

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

SELECT SYSTEM_USER;  

См. также

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