Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Azure SQL Database
Azure SQL Managed Instance
SQL-databas i Förhandsversion av Microsoft Fabric
Returnerar säkerhetsidentifieringsnumret (SID) för det angivna inloggningsnamnet.
Transact-SQL syntaxkonventioner
Syntax
SUSER_SID ( [ 'login' ] [ , Param2 ] )
Arguments
'* login *'
Gäller för: SQL Server 2008 (10.0.x) och senare versioner
Användarens inloggningsnamn.
login är sysname.
inloggning, vilket är valfritt, kan vara en SQL Server-inloggning eller Microsoft Windows-användare eller grupp. Om inloggning inte anges returneras information om den aktuella säkerhetskontexten. Om parametern innehåller returnerar NULLSUSER_SID .NULL
Param2
Gäller för: SQL Server 2012 (11.x) och senare versioner
Anger om inloggningsnamnet har verifierats. Param2 är av typen int och är valfritt. När Param2 är 0 verifieras inte inloggningsnamnet. När Param2 inte anges som 0 verifieras Windows-inloggningsnamnet vara exakt samma som inloggningsnamnet som lagras i SQL Server.
Returtyper
varbinary(85)
Anmärkningar
SUSER_SID kan användas som en DEFAULT begränsning i antingen ALTER TABLE eller CREATE TABLE.
SUSER_SID kan användas i en urvalslista, i en WHERE sats och var som helst där ett uttryck tillåts.
SUSER_SID måste alltid följas av parenteser, även om ingen parameter har angetts.
När det anropas utan argument SUSER_SID returneras SID för den aktuella säkerhetskontexten. När det anropas utan argument i en batch som har växlat kontext med hjälp EXECUTE ASav returnerar SUSER_SID SID för den personifierade kontexten. När det anropas från en personifierad kontext SUSER_SID(ORIGINAL_LOGIN()) returnerar SID för den ursprungliga kontexten.
När SQL Server-sortering och Windows-sortering skiljer sig SUSER_SID åt kan det misslyckas när SQL Server och Windows lagrar inloggningen i ett annat format. Om Till exempel Windows-datorn TestComputer har inloggningen User och SQL Server lagrar inloggningen som TESTCOMPUTER\User, kan sökningen av inloggningen TestComputer\User misslyckas med att matcha inloggningsnamnet korrekt. Om du vill hoppa över den här valideringen av inloggningsnamnet använder du Param2. Olika sortering är ofta en orsak till SQL Server-fel 15401: Windows NT user or group '%s' not found. Check the name again.
Kommentarer för Azure SQL Database, SQL Database i Fabric
SUSER_SID returnera alltid inloggnings-SID för den aktuella säkerhetskontexten. Använd sys.database_principals för att hämta SID för en annan inloggning.
-instruktionen SUSER_SID stöder inte körning med hjälp av en personifierad säkerhetskontext via EXECUTE AS.
Examples
A. Använda SUSER_SID
I följande exempel returneras säkerhetsidentifieringsnumret (SID) för den aktuella säkerhetskontexten.
SELECT SUSER_SID();
B. Använda SUSER_SID med en specifik inloggning
Gäller för: SQL Server 2012 (11.x) och senare versioner
I följande exempel returneras säkerhetsidentifieringsnumret för SQL Server-inloggningen sa .
SELECT SUSER_SID('sa');
GO
C. Använda SUSER_SID med ett Windows-användarnamn
Gäller för: SQL Server 2012 (11.x) och senare versioner
I följande exempel returneras säkerhetsidentifieringsnumret för Windows-användaren London\Workstation1.
SELECT SUSER_SID('London\Workstation1');
GO
D. Använd SUSER_SID som standardvillkor
I följande exempel används SUSER_SID som en DEFAULT begränsning i en CREATE TABLE -instruktion.
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
E. Jämför Inloggningsnamnet för Windows med inloggningsnamnet som lagras i SQL Server
Gäller för: SQL Server 2012 (11.x) och senare versioner
I följande exempel visas hur du använder Param2 för att hämta SID från Windows och använder detta SID som indata till SUSER_SNAME funktionen. Exemplet innehåller inloggningen i formatet där den lagras i Windows (TestComputer\User) och returnerar inloggningen i det format som den lagras i SQL Server (TESTCOMPUTER\User).
SELECT SUSER_SNAME(SUSER_SID('TestComputer\User', 0));