CURRENT_USER (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии) ДаБаза данных SQL Azure ДаУправляемый экземпляр SQL Azure даAzure Synapse Analytics даПараллельное хранилище данных

Эта функция возвращает имя текущего пользователя. Она эквивалентна функции USER_NAME().

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

Синтаксис

CURRENT_USER  

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

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

sysname

Remarks

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

Сведения о получении имени входа текущего пользователя см. в статьях SUSER_NAME (Transact-SQL) и SYSTEM_USER (Transact-SQL).

Примеры

A. Использование ключевого слова CURRENT_USER для возврата имени текущего пользователя

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

SELECT CURRENT_USER;  
GO  

Б. Использование ключевого слова CURRENT_USER в качестве ограничения DEFAULT

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

USE AdventureWorks2012;  
GO  
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES  
      WHERE TABLE_NAME = 'orders22')  
   DROP TABLE orders22;  
GO  
SET NOCOUNT ON;  
CREATE TABLE orders22  
(  
order_id int IDENTITY(1000, 1) NOT NULL,
cust_id  int NOT NULL,
order_date smalldatetime NOT NULL DEFAULT GETDATE(),
order_amt money NOT NULL,
order_person char(30) NOT NULL DEFAULT CURRENT_USER
);  
GO  

В приведенном ниже коде запись вставляется в таблицу. Пользователь, выполняющий эти инструкции, имеет имя Wanida.

INSERT orders22 (cust_id, order_amt)  
VALUES (5105, 577.95);  
GO  
SET NOCOUNT OFF;  
GO  

Приведенный ниже запрос выбирает все данные из таблицы orders22.

SELECT * FROM orders22;  
GO  

Результирующий набор:

order_id    cust_id     order_date           order_amt    order_person
----------- ----------- -------------------- ------------ ------------
1000        5105        2005-04-03 23:34:00  577.95       Wanida
  
(1 row(s) affected)

В. Использование ключевого слова CURRENT_USER из олицетворенного контекста

В этом примере пользователь Wanida выполняет следующий код Transact-SQL для олицетворения пользователя Arnalfo:

SELECT CURRENT_USER;  
GO  
EXECUTE AS USER = 'Arnalfo';  
GO  
SELECT CURRENT_USER;  
GO  
REVERT;  
GO  
SELECT CURRENT_USER;  
GO  

Результирующий набор:

Wanida
Arnalfo
Wanida

См. также раздел

USER_NAME (Transact-SQL)
SYSTEM_USER (Transact-SQL)
sys.database_principals (Transact-SQL)
ALTER TABLE (Transact-SQL)
CREATE TABLE (Transact-SQL)
Системные функции (Transact-SQL)