SUSER_SID (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

' login '
Область применения: SQL Server 2008 (10.0.x) и более поздних версий

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

Param2
Область применения: SQL Server 2012 (11.x) и более поздних версий

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

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

замечания База данных SQL Azure

SUSER_SID всегда возвращает идентификатор безопасности для текущего контекста безопасности. Используйте sys.database_principals, чтобы получить идентификатор безопасности другого имени входа.

Инструкция SUSER_SID не поддерживает выполнение с помощью олицетворенного контекста безопасности посредством инструкции EXECUTE AS.

Примеры

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

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

SELECT SUSER_SID();  

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

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

Область применения: SQL Server 2012 (11.x) и более поздних версий

SELECT SUSER_SID('sa');  
GO  

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

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

Область применения: SQL Server 2012 (11.x) и более поздних версий

SELECT SUSER_SID('London\Workstation1');  
GO  

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

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

USE AdventureWorks2022;  
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 (11.x) и более поздних версий

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

См. также

ORIGINAL_LOGIN (Transact-SQL)
CREATE TABLE (Transact-SQL)
binary и varbinary (Transact-SQL)
Системные функции (Transact-SQL)