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


SUSER_SID (Transact-SQL)

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

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

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

Синтаксис

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

Аргументы

  • ' login '

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

  • Param2

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

    Указывает, проверено ли имя входа. 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

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

SELECT SUSER_SID('sa');

Б.Использование SUSER_SID с определенным именем входа

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

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

SELECT SUSER_SID('sa');
GO

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

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

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

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).

Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

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

См. также

Справочник

ORIGINAL_LOGIN (Transact-SQL)

CREATE TABLE (SQL Server)

binary и varbinary (Transact-SQL)

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