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


SUSER_SID (Transact-SQL)

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

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

Синтаксис

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

Аргументы

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

  • 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()) возвращает идентификатор безопасности оригинального контекста.

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

Примеры

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

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

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 AdventureWorks;
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 получить идентификатор безопасности из Windows и передать его функции SUSER_SNAME. В этом примере имя входа указывается в формате, в котором оно хранится в Windows (TestComputer\User), а возвращается в формате, в котором оно хранится в SQL Server (TESTCOMPUTER\User).

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

Журнал изменений

Обновленное содержимое

Добавлен параметр Param2 в разделы «Синтаксис» и «Аргументы».