Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Возвращает идентификатор безопасности (SID) для указанного имени входа.
Соглашения о синтаксисе Transact-SQL
Синтаксис
SUSER_SID ( [ 'login' ] [ , Param2 ] )
Аргументы
'* имя входа *'
Область применения: SQL Server 2008 (10.0.x) и более поздних версий
Имя входа пользователя. Аргумент login имеет тип sysname.
имя входа, которое является необязательным, может быть именем входа SQL Server или пользователем Или группой Microsoft Windows. Если аргумент login не задан, возвращаются сведения о текущем контексте безопасности. Если параметр содержит NULL, SUSER_SID возвращается 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 возвращает идентификатор безопасности текущего контекста безопасности. При вызове без аргумента в пакете, который переключил контекст с помощью EXECUTE AS, SUSER_SID возвращает идентификатор безопасности олицетворенного контекста. При вызове из олицетворенного контекста SUSER_SID(ORIGINAL_LOGIN()) возвращает идентификатор безопасности исходного контекста.
Если параметры сортировки SQL Server и параметры сортировки Windows отличаются, может завершиться ошибкой, SUSER_SID если SQL Server и Windows хранят имя входа в другом формате. Например, если на компьютере TestComputer Windows есть имя входа User , а SQL Server сохраняет имя входа как TESTCOMPUTER\User, поиск имени входа может завершиться ошибкой правильного разрешения имени входа TestComputer\User . Чтобы отключить проверку имени для входа, используйте параметр Param2. Различные параметры сортировки часто вызывают ошибку SQL Server 15401: Windows NT user or group '%s' not found. Check the name again.
Примечания для базы данных SQL Azure, базы данных SQL в Fabric
SUSER_SID всегда возвращает идентификатор безопасности входа для текущего контекста безопасности. Используйте sys.database_principals, чтобы получить идентификатор безопасности другого имени входа.
Инструкция SUSER_SID не поддерживает выполнение с помощью олицетворенного контекста безопасности.EXECUTE AS
Примеры
А. Использование SUSER_SID
В приведенном ниже примере возвращается идентификатор безопасности (SID) для текущего контекста безопасности.
SELECT SUSER_SID();
B. Использование SUSER_SID с определенным именем входа
Область применения: SQL Server 2012 (11.x) и более поздних версий
В следующем примере возвращается идентификационный номер безопасности для имени входа SQL Server sa .
SELECT SUSER_SID('sa');
GO
В. Использование SUSER_SID с именем пользователя Windows
Область применения: SQL Server 2012 (11.x) и более поздних версий
В следующем примере возвращается идентификационный номер безопасности для пользователя Windows London\Workstation1.
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
Область применения: SQL Server 2012 (11.x) и более поздних версий
В приведенном ниже примере показано, как с помощью параметра Param2 получить SID из Windows и передать его в функцию SUSER_SNAME. Пример предоставляет имя входа в формате, в котором он хранится в Windows (TestComputer\User), и возвращает имя входа в формате, в котором он хранится в SQL Server (TESTCOMPUTER\User).
SELECT SUSER_SNAME(SUSER_SID('TestComputer\User', 0));