SYSTEM_USER (Transact-SQL)

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

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

SYSTEM_USER

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

nchar

Замечания

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

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

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

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

Примеры

А. Использование функции 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)

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

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

USE AdventureWorks;
GO
CREATE TABLE 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_Tracking (Rep_id)
VALUES (151)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (293, '5/15/98')
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (27882, '6/20/98')
INSERT Sales_Tracking (Rep_id)
VALUES (21392)
INSERT Sales_Tracking (Rep_id, Last_sale)
VALUES (24283, '11/03/98')
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)

См. также

Справочник

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)

Другие ресурсы

Разрешение значений NULL
Обеспечение безопасности служб Notification Services
Значения по умолчанию
Значения NULL

Справка и поддержка

Получение помощи по SQL Server 2005