SUSER_SID (Transact-SQL)

Возвращает идентификатор безопасности (SID) для указанного имени входа.

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

Синтаксис

SUSER_SID ( [ 'login' ] [ , Param2 ] ) 

Аргументы

  • ' login '
    Имя входа пользователя. Аргумент login имеет тип sysname. Аргумент login необязателен и может представлять собой имя входа на SQL Server или имя пользователя или группы в Microsoft Windows. Если аргумент login не задан, возвращаются сведения о текущем контексте безопасности. Если параметр содержит слово NULL, то возвращается NULL.

  • Param2
    Указывает, проверено ли имя входа. Param2 является необязательным параметром типа int. Если значение Param2 равно 0, то имя входа не проверяется. Если параметр Param2 не равен 0, то имя входа Windows проверяется на обязательное соответствие имени входа, сохраненному в SQL Server.

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

varbinary(85)

Замечания

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

Если функция SUSER_SID вызывается без аргументов, она возвращает идентификатор SID текущего контекста безопасности. Если функция SUSER_SID вызывается без аргументов в пакете, в котором был переключен контекст с помощью инструкции EXECUTE AS, функция возвращает идентификатор SID олицетворенного контекста. При вызове из олицетворенного контекста функция SUSER_SID(ORIGINAL_LOGIN()) возвращает SID оригинального контекста.

Если параметры сортировки SQL Server и Windows не совпадают, функция SUSER_SID может завершиться, если имя входа в SQL Server и Windows хранятся в разных форматах. Например, если на компьютере Windows TestComputer есть пользователь User, а в SQL Server это имя входа хранится как TESTCOMPUTER\User, то при разрешении имя входа TestComputer\User может быть не обнаружено. Чтобы пропустить данную проверку имени входа, используйте параметр Param2. Разные параметры сортировки часто вызывают ошибку 15401 SQL Server:

Windows NT user or group '%s' not found. Check the name again.

Примеры

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

В следующем примере возвращается идентификатор безопасности для имени входа на SQL Server sa.

SELECT SUSER_SID('sa');
GO

Б.Использование SUSER_SID с именем пользователя Windows

В следующем примере возвращается идентификатор безопасности для пользователя Windows London\Workstation1.

SELECT SUSER_SID('London\Workstation1');
GO

В.Использование SUSER_SID в качестве ограничения DEFAULT

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

USE AdventureWorks2012;
GO
CREATE TABLE sid_example
(
login_sid   varbinary(85) DEFAULT SUSER_SID(),
login_name  varchar(30) DEFAULT SYSTEM_USER,
login_dept  varchar(10) DEFAULT 'SALES',
login_date  datetime DEFAULT GETDATE()
); 
GO
INSERT sid_example DEFAULT VALUES;
GO

Г.Сравнение имени входа Windows с именем входа, сохраненным в SQL Server

В следующем примере показано, как с помощью параметра Param2 получить SID из Windows и передать его функции SUSER_SNAME. В этом примере имя входа указывается в формате, в котором оно хранится в Windows (TestComputer\User), а возвращается в формате, в котором оно хранится в SQL Server (TESTCOMPUTER\User).

SELECT SUSER_SNAME(SUSER_SID('TestComputer\User', 0));

См. также

Справочник

ORIGINAL_LOGIN (Transact-SQL)

Инструкция CREATE TABLE (Transact-SQL)

binary и varbinary (Transact-SQL)

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