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


USER (Transact-SQL)

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

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

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

Синтаксис

USER

Возвращаемые типы

char

Замечания

Функция USER выполняет то же действие, что и системная функция USER_NAME.

Функцию USER можно указывать в ограничениях DEFAULT инструкций CREATE TABLE и ALTER TABLE либо использовать ее как любую другую стандартную функцию.

Функция USER всегда возвращает имя текущего контекста. При вызове после инструкции EXECUTE AS функция USER возвращает имя олицетворяемого контекста.

Если участник Windows производит доступ к базе данных посредством членства в группе, функция USER возвращает имя участника Windows, а не имя группы.

Примеры

А.Получение имени пользователя базы данных функцией USER

В следующем примере объявляется переменная типа char, ей присваивается текущее значение функции USER, а затем производится печать этой переменной вместе с текстовым описанием.

DECLARE @usr char(30)
SET @usr = user
SELECT 'The current user''s database username is: '+ @usr
GO

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

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

The current user's database username is: dbo

(1 row(s) affected)

Б.Применение функции USER в ограничении DEFAULT

В следующем примере создается таблица с использованием функции USER в ограничении DEFAULT для столбца менеджеров по продажам.

USE AdventureWorks2012;
GO
CREATE TABLE inventory22
(
 part_id int IDENTITY(100, 1) NOT NULL,
 description varchar(30) NOT NULL,
 entry_person varchar(30) NOT NULL DEFAULT USER 
)
GO
INSERT inventory22 (description)
VALUES ('Red pencil')
INSERT inventory22 (description)
VALUES ('Blue pencil')
INSERT inventory22 (description)
VALUES ('Green pencil')
INSERT inventory22 (description)
VALUES ('Black pencil')
INSERT inventory22 (description)
VALUES ('Yellow pencil')
GO

Ниже приведен запрос для получения всех данных из таблицы inventory22:

SELECT * FROM inventory22 ORDER BY part_id;
GO

Результирующий набор (обратите внимание на значение столбца entry-person):

part_id description entry_person

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

100 Red pencil dbo

101 Blue pencil dbo

102 Green pencil dbo

103 Black pencil dbo

104 Yellow pencil dbo

(5 row(s) affected)

В.Применение функции USER в сочетании с предложением EXECUTE AS

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

SELECT USER;
GO
EXECUTE AS USER = 'Mario';
GO
SELECT USER;
GO
REVERT;
GO
SELECT USER;
GO

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

DBO

Mario

DBO

См. также

Справочник

ALTER TABLE (Transact-SQL)

CREATE TABLE (SQL Server)

CURRENT_TIMESTAMP (Transact-SQL)

CURRENT_USER (Transact-SQL)

Функции безопасности (Transact-SQL)

SESSION_USER (Transact-SQL)

SYSTEM_USER (Transact-SQL)

USER_NAME (Transact-SQL)