USER_NAME (Transact-SQL)
Возвращает имя пользователя базы данных по указанному идентификационному номеру.
Синтаксис
USER_NAME ( [ id ] )
Аргументы
- id
Идентификационный номер, ассоциированный с пользователем базы данных. Аргумент id имеет тип int. Необходимо поставить скобки.
Возвращаемые типы
nvarchar(256)
Замечания
Когда параметр id не указывается, подразумевается контекст текущего пользователя. При использовании функции USER_NAME без указания id после инструкции EXECUTE AS функция USER_NAME возвращает имя олицетворенного пользователя. Если пользователь Windows попытается получить доступ к базе данных в качестве члена группы, функция USER_NAME вернет имя этого пользователя, а не имя группы.
Примеры
A. Использование USER_NAME
В следующем примере возвращается имя пользователя по идентификатору пользователя 13.
SELECT USER_NAME(13);
GO
Б. Использование USER_NAME без идентификатора
Следующий пример демонстрирует поиск имени текущего пользователя без указания его идентификатора.
SELECT USER_NAME();
GO
Далее приведен результирующий набор для пользователя, который является членом предопределенной роли сервера sysadmin.
------------------------------
dbo
(Обработано строк: 1)
В. Использование USER_NAME в предложении WHERE
Следующий пример иллюстрирует поиск в таблице sysusers строки, имя которой равняется результату работы системной функции USER_NAME для пользователя с идентификационным номером, равным 1.
SELECT name FROM sysusers WHERE name = USER_NAME(1);
GO
Ниже приводится результирующий набор.
name
------------------------------
dbo
(Обработано строк: 1)
Г. Вызов USER_NAME во время олицетворения пользователя с помощью EXECUTE AS
Следующий пример показывает, как USER_NAME ведет себя во время олицетворения пользователя.
SELECT USER_NAME();
GO
EXECUTE AS USER = 'Zelig';
GO
SELECT USER_NAME();
GO
REVERT;
GO
SELECT USER_NAME();
GO
Ниже приводится результирующий набор.
DBO
Zelig
DBO