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 хранятся в разных форматах. Например, если на компьютере TestComputer под управлением Windows имеется имя входа User и в SQL Server имя входа сохранено как TESTCOMPUTER\User, то при поиске имени входа TestComputer\User может не удастся правильно разрешить его. Чтобы отключить проверку имени входа, пользуйтесь параметром Param2. Разные параметры сортировки часто вызывают ошибку 15401 в SQL Server:

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

Примеры

A. Использование функции SUSER_SID

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

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 AdventureWorks2008R2;
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)) ;