Udostępnij za pośrednictwem


SUSER_SID (Transact-SQL)

Zwraca numer identyfikacyjny zabezpieczeń (SID) dla nazwy logowania określony.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

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

Argumenty

  • 'login'
    Jest nazwą logowania użytkownika.loginis sysname.login, który jest opcjonalny, może być SQL Server logowania lub Microsoft systemu Windows użytkownika lub grupy.Jeśli login jest nie określono informacji na temat bieżącego kontekstu zabezpieczeń jest zwracany.

  • Param2
    Określa, czy nazwa logowania jest sprawdzana.Param2Typ jest int i jest opcjonalne.Gdy Param2 jest równa 0, nie sprawdza poprawności nazwy logowania.Gdy Param2 nie jest określony jako 0, Windows, nazwa logowania jest weryfikowana jest dokładnie taka sama, jak nazwa logowania przechowywane w SQL Server.

Zwracane typy

varbinary(85)

Uwagi

SUSER_SID mogą używane jako domyślne ograniczenie w instrukcji ALTER TABLE lub CREATE TABLE.SUSER_SID mogą być używane na liście select, w przypadku gdy klauzulai dowolnym wyrażenie jest dozwolone.SUSER_SID zawsze musi być stosowana w nawiasach, nawet jeśli nie określono żadnych parametrów.

Po wywołaniu bez argumentu SUSER_SID zwraca SID bieżącego kontekstu zabezpieczeń.Po wywołaniu bez argumentu w przełączył kontekstu przy użyciu jako wykonywanie partia SUSER_SID zwraca SID kontekście personifikowanego.Po wywołaniu z kontekście personifikowanego SUSER_SID(ORIGINAL_LOGIN()) zwraca SID oryginalnego kontekstu.

Gdy SQL Server sortowanie i sortowanie systemu Windows są różne, SUSER_SID może się nie powieść podczas SQL Server i system Windows przechowuje logowania w innym formacie.Na przykład jeśli komputer systemu Windows TestComputer ma identyfikator logowania User i SQL Server przechowuje Logowanie jako TESTCOMPUTER\User, wyszukiwanie logowania TestComputer\User może przestać działać poprawnie rozpoznać nazwy logowania.Aby pominąć to sprawdzanie poprawności nazwy logowania, należy użyć Param2.Różne sposoby sortowania jest często przyczyną SQL Server Błąd 15401:

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

Przykłady

A.Przy użyciu SUSER_SID

Poniższy przykład zwraca numer identyfikacyjny zabezpieczeń SQL Server sa logowania.

SELECT SUSER_SID('sa');
GO

B.SUSER_SID przy użyciu nazwy użytkownika systemu Windows

Poniższy przykład zwraca numer identyfikacyjny zabezpieczeń dla użytkowników systemu Windows London\Workstation1.

SELECT SUSER_SID('London\Workstation1');
GO

C.Używając SUSER_SID jako domyślne ograniczenie

W poniższym przykładzie użyto SUSER_SID jako DEFAULT ograniczenia w CREATE TABLE instrukcja.

USE AdventureWorks2008R2;
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.Porównywanie nazwy logowania systemu Windows do nazwy logowania przechowywane w SQL Server

Poniższy przykład pokazuje sposób używania Param2 do uzyskania SID z systemu Windows i używa tego SID jako dane wejściowe do SUSER_SNAME funkcja.W przykładzie podano logowania w formacie, w którym jest przechowywany w systemie Windows (TestComputer\User) i zwraca identyfikator logowania w formacie, w którym są przechowywane w SQL Server ()TESTCOMPUTER\User).

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