USER_NAME (Transact-SQL)
Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure конечной точке аналитики платформы Аналитики Azure Synapse Analytics (PDW) в Microsoft Fabric Хранилище в Microsoft Fabric
Возвращает имя пользователя базы данных из указанного идентификатора или текущего имени пользователя.
Соглашения о синтаксисе Transact-SQL
Синтаксис
USER_NAME ( [ ID ] )
Аргументы
ИД
Идентификационный номер, связанный с пользователем базы данных, как указано в sys.database_principals. Идентификатор int. Скобки обязательны.
Типы возвращаемых данных
nvarchar(128)
Замечания
Если идентификатор опущен, предполагается, что текущий пользователь в текущем контексте. Если параметр содержит слово NULL
, USER_NAME
возвращается NULL
. При USER_NAME
вызове без указания идентификатора после EXECUTE AS
инструкции USER_NAME
возвращает имя олицетворенного пользователя. Если субъект Windows обращается к базе данных путем членства в группе, USER_NAME
возвращает имя субъекта Windows вместо группы.
USER_NAME()
Хотя функция поддерживается в База данных SQL Azure, использование EXECUTE AS USER = USER_NAME(n)
не поддерживается в База данных SQL Azure.
Примеры
А. Используйте USER_NAME() для идентификации идентификатора пользователя
В следующем примере возвращается имя пользователя для идентификатора 13
пользователя, как указано в sys.database_principals.
SELECT USER_NAME(13);
GO
B. Использование USER_NAME без идентификатора
Следующий пример демонстрирует поиск имени текущего пользователя без указания его идентификатора.
SELECT USER_NAME();
GO
Далее приведен результирующий набор для пользователя, который является членом предопределенной роли сервера sysadmin.
dbo
В. Использование USER_NAME в предложении WHERE
Следующий пример находит строку в sys.database_principals
, в которой имя равно результату применения системной функции USER_NAME
к идентификатору 1
пользователя.
SELECT name FROM sys.database_principals WHERE name = USER_NAME(1);
GO
Вот результирующий набор.
name
------------------------------
dbo
(1 row(s) affected)
D. Вызов USER_NAME во время олицетворения с помощью EXECUTE AS
Следующий пример показывает, как USER_NAME
ведет себя во время олицетворения пользователя.
EXECUTE AS
в настоящее время не поддерживается в Microsoft Fabric.
Внимание
При тестировании с EXECUTE AS
помощью всегда следует выполнить скрипт REVERT
.
SELECT USER_NAME();
GO
EXECUTE AS USER = 'Zelig';
GO
SELECT USER_NAME();
GO
REVERT;
GO
SELECT USER_NAME();
GO
Вот результирующий набор.
-------------
dbo
-------------
Zelig
-------------
dbo
Примеры: Azure Synapse Analytics и система платформы аналитики (PDW)
Е. Использование USER_NAME без идентификатора
Следующий пример демонстрирует поиск имени текущего пользователя без указания его идентификатора.
SELECT USER_NAME();
Ниже приведен результирующий набор для пользователя, вошедшего в систему.
User7
F. Использование USER_NAME в предложении WHERE
Следующий пример иллюстрирует поиск в таблице sysusers
строки, имя которой равняется результату работы системной функции USER_NAME
для пользователя с идентификационным номером, равным 1
.
SELECT name FROM sysusers WHERE name = USER_NAME(1);
Вот результирующий набор.
name
------------------------------
User7
Связанный контент
- SUSER_NAME (Transact-SQL)
- SUSER_SNAME (Transact-SQL)
- Инструкция ALTER TABLE (Transact-SQL)
- CREATE TABLE (Transact-SQL)
- CURRENT_TIMESTAMP (Transact-SQL)
- CURRENT_USER (Transact-SQL)
- SESSION_USER (Transact-SQL)
- Системные функции (Transact-SQL)
- SYSTEM_USER (Transact-SQL)
- sys.database_principals (Transact-SQL).