Поделиться через


USER_NAME (Transact-SQL)

Возвращает имя пользователя базы данных по указанному идентификационному номеру.

Значок ссылки на разделСинтаксические обозначения в 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