Delen via


SUSER_SID (Transact-SQL)

Van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-database in Microsoft Fabric Preview

Retourneert het beveiligingsidentificatienummer (SID) voor de opgegeven aanmeldingsnaam.

Transact-SQL syntaxis-conventies

Syntaxis

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

Arguments

'* aanmelden *'

Van toepassing op: SQL Server 2008 (10.0.x) en latere versies

De aanmeldingsnaam van de gebruiker. aanmelden is sysname. aanmelden, optioneel, kan een SQL Server-aanmelding of Microsoft Windows-gebruiker of -groep zijn. Als aanmelding niet is opgegeven, wordt informatie over de huidige beveiligingscontext geretourneerd. Als de parameter bevat NULL, SUSER_SID wordt deze geretourneerd NULL.

Param2

Van toepassing op: SQL Server 2012 (11.x) en latere versies

Hiermee geeft u op of de aanmeldingsnaam is gevalideerd. Param2 is van het type int en is optioneel. Wanneer Param2 0 is, wordt de aanmeldingsnaam niet gevalideerd. Wanneer Param2 niet is opgegeven als 0, wordt gecontroleerd of de Windows-aanmeldingsnaam exact hetzelfde is als de aanmeldingsnaam die is opgeslagen in SQL Server.

Retourtypen

varbinary(85)

Opmerkingen

SUSER_SID kan worden gebruikt als een DEFAULT beperking in ALTER TABLE of CREATE TABLE. SUSER_SID kan worden gebruikt in een selectielijst, in een WHERE component en overal waar een expressie is toegestaan. SUSER_SID moet altijd worden gevolgd door haakjes, zelfs als er geen parameter is opgegeven.

Wanneer aangeroepen zonder argument, SUSER_SID retourneert u de SID van de huidige beveiligingscontext. Wanneer aangeroepen zonder argument in een batch die context heeft gewijzigd met behulp EXECUTE ASvan, SUSER_SID retourneert u de SID van de geïmiteerde context. Wanneer aangeroepen vanuit een geïmiteerde context, SUSER_SID(ORIGINAL_LOGIN()) wordt de SID van de oorspronkelijke context geretourneerd.

Wanneer de SQL Server-sortering en de Windows-sortering verschillen, SUSER_SID kan dit mislukken wanneer SQL Server en Windows de aanmelding in een andere indeling opslaan. Als de Windows-computer TestComputer bijvoorbeeld de aanmelding User heeft en SQL Server de aanmelding TESTCOMPUTER\Useropslaat als, kan het opzoeken van de aanmelding TestComputer\User de aanmeldingsnaam mogelijk niet correct oplossen. Als u deze validatie van de aanmeldingsnaam wilt overslaan, gebruikt u Param2. Verschillende sorteringen zijn vaak een oorzaak van SQL Server-fout 15401: Windows NT user or group '%s' not found. Check the name again.

Opmerkingen voor Azure SQL Database, SQL Database in Fabric

SUSER_SID retourneert altijd de aanmeldings-SID voor de huidige beveiligingscontext. Gebruik sys.database_principals om de SID van een andere aanmelding te verkrijgen.

De SUSER_SID instructie biedt geen ondersteuning voor uitvoering met behulp van een geïmiteerde beveiligingscontext via EXECUTE AS.

Voorbeelden

Eén. SUSER_SID gebruiken

In het volgende voorbeeld wordt het beveiligingsidentificatienummer (SID) geretourneerd voor de huidige beveiligingscontext.

SELECT SUSER_SID();

B. Gebruik SUSER_SID met een specifieke aanmelding

Van toepassing op: SQL Server 2012 (11.x) en latere versies

In het volgende voorbeeld wordt het beveiligingsidentificatienummer voor de SQL Server-aanmelding sa geretourneerd.

SELECT SUSER_SID('sa');
GO

C. Gebruik SUSER_SID met een Windows-gebruikersnaam

Van toepassing op: SQL Server 2012 (11.x) en latere versies

In het volgende voorbeeld wordt het beveiligingsidentificatienummer voor de Windows-gebruiker London\Workstation1geretourneerd.

SELECT SUSER_SID('London\Workstation1');
GO

D. Gebruik SUSER_SID als standaardbeperking

In het volgende voorbeeld wordt een DEFAULT beperking in een CREATE TABLE instructie gebruiktSUSER_SID.

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. Vergelijk de Windows-aanmeldingsnaam met de aanmeldingsnaam die is opgeslagen in SQL Server

Van toepassing op: SQL Server 2012 (11.x) en latere versies

In het volgende voorbeeld ziet u hoe u Param2 gebruikt om de SID van Windows te verkrijgen en die SID als invoer voor de SUSER_SNAME functie gebruikt. Het voorbeeld bevat de aanmelding in de indeling waarin deze is opgeslagen in Windows (TestComputer\User) en retourneert de aanmelding in de indeling waarin deze is opgeslagen in SQL Server (TESTCOMPUTER\User).

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