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
См. также
Справочник
CURRENT_TIMESTAMP (Transact-SQL)