SUSER_SID (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

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 später

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 das Wort NULL enthalten ist, wird NULL zurückgegeben.

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

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 ALTER TABLE oder CREATE TABLE verwendet werden. SUSER_SID kann in der SELECT-Liste, in einer WHERE-Klausel und überall dort verwendet werden, wo ein Ausdruck zulässig ist. Auf SUSER_SID müssen immer Klammern folgen, selbst wenn kein Parameter angegeben wird.

Bei einem Aufruf ohne Argument gibt SUSER_SID die SID des aktuellen Sicherheitskontexts zurück. Bei einem Aufruf ohne Argument innerhalb eines Batches, bei dem der Kontext mithilfe von EXECUTE AS gewechselt wurde, gibt SUSER_SID die SID des Kontexts an, dessen Identität angenommen wurde. Wenn SUSER_SID(ORIGINAL_LOGIN()) aus einem Kontext aufgerufen wird, dessen Identität angenommen wurde, wird die SID des ursprünglichen Kontexts zurückgegeben.

Unterscheiden sich die SQL Server-Sortierung und die Windows-Sortierung, kann SUSER_SID fehlschlagen, wenn SQL Server und Windows die Anmeldung in einem unterschiedlichen Format speichern. Falls der Windows-Computer "TestComputer" z. B. über den Anmeldenamen "User" verfügt und SQL Server die Anmeldung als TESTCOMPUTER\User speichert, kann die Suche nach der Anmeldung "TestComputer\User" den Anmeldenamen ggf. nicht richtig auflösen. Verwenden Sie Param2, um diese Überprüfung des Anmeldenamens zu überspringen. Abweichende Sortierungen sind häufig die Ursache für den SQL Server-Fehler 15401:

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

Azure SQL-Datenbank Hinweise

SUSER_SID gibt immer die Sicherheits-ID 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 nicht die Ausführung mit einem Sicherheitskontext, dessen Identität angenommen wird, 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 bestimmten Anmeldedaten

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

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

SELECT SUSER_SID('sa');  
GO  

C. Verwenden von SUSER_SID mit einem Windows-Benutzernamen

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

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

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 in SQL Server gespeicherten Anmeldenamen

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).

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

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

Siehe auch

ORIGINAL_LOGIN (Transact-SQL)
CREATE TABLE (Transact-SQL)
binary und varbinary (Transact-SQL)
Systemfunktionen (Transact-SQL)