USER_NAME (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

USER_NAME ( [ id ] )

Аргументы

  • id
    Номер идентификатора, сопоставленный с пользователем базы данных. idявляется int. Необходимо поставить скобки.

Типы возвращаемых данных

nvarchar(256)

Замечания

Когда параметр id не указывается, подразумевается контекст текущего пользователя. Если параметр содержит слово NULL, то возвращается NULL. При вызове USER_NAME без указания id после инструкции EXECUTE AS будет возвращено имя олицетворенного пользователя. Если пользователь Windows попытается получить доступ к базе данных в качестве члена группы, функция USER_NAME вернет имя этого пользователя, а не имя группы.

Примеры

А.Использование USER_NAME.

Следующий пример возвращает имя пользователя по его идентификатору 13.

SELECT USER_NAME(13);
GO

Б.Использование USER_NAME без идентификатора

Следующий пример демонстрирует поиск имени текущего пользователя без указания его идентификатора.

SELECT USER_NAME();
GO

Далее приведен результирующий набор для пользователя, который является членом предопределенной роли сервера sysadmin.

------------------------------

dbo

(1 row(s) affected)

В.Использование USER_NAME в предложении WHERE

Следующий пример иллюстрирует поиск в таблице sysusers строки, имя которой равняется результату работы системной функции USER_NAME для пользователя с идентификационным номером, равным 1.

SELECT name FROM sysusers WHERE name = USER_NAME(1);
GO

Ниже приводится результирующий набор.

name

------------------------------

dbo

(1 row(s) affected)

Г.Вызов 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

См. также

Справочник

ALTER TABLE (Transact-SQL)

CREATE TABLE (SQL Server)

CURRENT_TIMESTAMP (Transact-SQL)

CURRENT_USER (Transact-SQL)

SESSION_USER (Transact-SQL)

Системные функции (Transact-SQL)

SYSTEM_USER (Transact-SQL)