Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применимо к:SQL Server
База данных Azure SQL
Управляемый экземпляр Azure SQL
Azure Synapse Analytics
Система платформы аналитики (PDW)
Конечная точка SQL аналитики в Microsoft Fabric
Хранилище в Microsoft Fabric
База данных SQL в 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).