SUSER_SID (Transact-SQL)

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

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

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

Argumente

  • 'login'
    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 sein. Falls login nicht angegeben wird, werden Informationen über den aktuellen Sicherheitskontext zurückgegeben.

  • Param2
    Gibt an, ob der Anmeldename überprüft wird. Param2 ist vom Datentyp int und ist optional. Wenn Param2 den Wert 0 hat, wird der Anmeldename nicht überprüft. Wenn für Param2 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)

Hinweise

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.

Beispiele

A. Verwenden von SUSER_SID

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

SELECT SUSER_SID('sa');
GO

B. Verwenden von SUSER_SID mit einem Windows-Benutzernamen

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

SELECT SUSER_SID('London\Workstation1');
GO

C. 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 AdventureWorks;
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

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

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

Änderungsverlauf

Aktualisierter Inhalt

Param2 wurde den Abschnitten zu Syntax und Argumenten hinzugefügt.