Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Относится к:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Система аналитической платформы (PDW)
SQL база данных в Microsoft Fabric
Эта функция возвращает имя текущего пользователя. Она эквивалентна функции USER_NAME().
Соглашения о синтаксисе Transact-SQL
Синтаксис
CURRENT_USER
Типы возвращаемых данных
sysname
Замечания
Функция CURRENT_USER возвращает имя текущего контекста безопасности. Если CURRENT_USER выполняется после того, как вызов EXECUTE AS переключает контекст, функция CURRENT_USER возвращает имя олицетворенного контекста. Если субъект Windows попытается получить доступ к базе данных в качестве члена группы, функция CURRENT_USER вернет имя этого субъекта, а не имя группы.
Сведения о получении имени входа текущего пользователя см. в статьях SUSER_NAME (Transact-SQL) и SYSTEM_USER (Transact-SQL).
Примеры
А. Использование ключевого слова CURRENT_USER для возврата имени текущего пользователя
В приведенном ниже примере возвращается имя текущего пользователя.
SELECT CURRENT_USER;
GO
B. Использование ключевого слова CURRENT_USER в качестве ограничения DEFAULT
В приведенном ниже примере создается таблица, использующая функцию CURRENT_USER в качестве ограничения DEFAULT для столбца order_person в строке продаж.
USE AdventureWorks2022;
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)