Freigeben über


SUSER_SID (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankVerwaltete Azure SQL-InstanzSQL-Datenbank in Microsoft Fabric

Gibt die SID (Sicherheits-ID) für den angegebenen Anmeldenamen zurück.

Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

'* Login *'

Gilt für: SQL Server 2008 (10.0.x) und höhere Versionen

Der Anmeldename des Benutzers. login ist vom Datentyp sysname. login ist optional und kann eine SQL Server-Anmeldung oder ein Microsoft Windows-Benutzer bzw. eine -Gruppe darstellen. Falls login nicht angegeben wird, werden Informationen über den aktuellen Sicherheitskontext zurückgegeben. Wenn der Parameter enthält NULL, wird SUSER_SID zurückgegeben NULL.

Param2

Gilt für: SQL Server 2012 (11.x) und höhere Versionen

Gibt an, ob der Anmeldename validiert wird. Param2 weist den Typ int auf und ist optional. Wenn Param2 den Wert 0 hat, wird der Anmeldename nicht überprüft. Wenn fürParam2 nicht der Wert 0 angegeben wird, wird überprüft, ob der Windows-Anmeldename genau mit dem in SQL Server gespeicherten Anmeldenamen übereinstimmt.

Rückgabetypen

varbinary(85)

Bemerkungen

SUSER_SID kann als DEFAULT Einschränkung in einer ALTER TABLE oder CREATE TABLEin . SUSER_SID kann in einer Auswahlliste, in einer Klausel und an einer WHERE beliebigen Stelle verwendet werden, an der ein Ausdruck zulässig ist. SUSER_SID muss immer auf Klammern folgen, auch wenn kein Parameter angegeben ist.

Wenn ohne Argument aufgerufen wird, SUSER_SID wird die SID des aktuellen Sicherheitskontexts zurückgegeben. Wenn sie ohne Argument innerhalb eines Batchs aufgerufen wird, deren Kontext mithilfe EXECUTE ASdes Kontexts gewechselt wurde, SUSER_SID wird die SID des identitätswechselten Kontexts zurückgegeben. Wenn sie aus einem imitierten Kontext aufgerufen wird, SUSER_SID(ORIGINAL_LOGIN()) wird die SID des ursprünglichen Kontexts zurückgegeben.

Wenn die SQL Server-Sortierung und die Windows-Sortierung unterschiedlich sind, können Fehler auftreten, SUSER_SID wenn SQL Server und Windows die Anmeldung in einem anderen Format speichern. Wenn der Windows-Computer TestComputer beispielsweise über die Anmeldung verfügt und SQL Server die Anmeldung UserTESTCOMPUTER\Userspeichert, kann die Suche der Anmeldung TestComputer\User fehlschlagen, um den Anmeldenamen ordnungsgemäß aufzulösen. Verwenden Sie Param2, um diese Überprüfung des Anmeldenamens zu überspringen. Unterschiedliche Sortierungen sind häufig eine Ursache für SQL Server-Fehler 15401: Windows NT user or group '%s' not found. Check the name again.

Hinweise für Azure SQL-Datenbank, SQL-Datenbank in Fabric

SUSER_SID gibt immer die Anmelde-SID für den aktuellen Sicherheitskontext zurück. Verwenden Sie sys.database_principals, um die Sicherheits-ID einer anderen Anmeldung zu erhalten.

Die SUSER_SID Anweisung unterstützt die Ausführung nicht mithilfe eines imitierten Sicherheitskontexts durch EXECUTE AS.

Beispiele

A. Verwenden von SUSER_SID

Im folgenden Beispiel wird die Sicherheits-ID (SID) für den aktuellen Sicherheitskontext zurückgegeben.

SELECT SUSER_SID();

B. Verwenden von SUSER_SID mit einer bestimmten Anmeldung

Gilt für: SQL Server 2012 (11.x) und höhere Versionen

Im folgenden Beispiel wird die Sicherheits-ID für den SQL Server sa-Anmeldenamen zurückgegeben.

SELECT SUSER_SID('sa');
GO

C. Verwenden von SUSER_SID mit einem Windows-Benutzernamen

Gilt für: SQL Server 2012 (11.x) und höhere Versionen

Im folgenden Beispiel wird die Sicherheits-ID für den Windows-Benutzer London\Workstation1 zurückgegeben.

SELECT SUSER_SID('London\Workstation1');
GO

D: Verwenden von SUSER_SID als DEFAULT-Einschränkung

Im folgenden Beispiel wird SUSER_SID als DEFAULT-Einschränkung in einer CREATE TABLE-Anweisung verwendet.

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. Vergleichen des Windows-Anmeldenamens mit dem anmeldenamen, der in SQL Server gespeichert ist

Gilt für: SQL Server 2012 (11.x) und höhere Versionen

Das folgende Beispiel zeigt, wie Sie Param2 zum Abrufen der SID von Windows verwenden und wie diese SID als Eingabe für die SUSER_SNAME-Funktion verwendet wird. Im Beispiel wird die Anmeldung in dem Format verwendet, in dem sie unter Windows gespeichert ist (TestComputer\User). Die Anmeldung wird dann in dem Format zurückgegeben, in dem sie in SQL Server gespeichert ist (TESTCOMPUTER\User).

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