Udostępnij za pomocą


SUSER_SID (Transact-SQL)

Dotyczy:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBaza danych SQL w usłudze Microsoft Fabric

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

Transact-SQL konwencje składni

Składnia

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

Arguments

'* logowanie *'

Dotyczy: SQL Server 2008 (10.0.x) i nowsze wersje

Nazwa logowania użytkownika. nazwa logowania to nazwa systemu. logowanie, które jest opcjonalne, może być identyfikatorem logowania programu SQL Server lub użytkownikiem lub grupą systemu Microsoft Windows. Jeśli nie określono nazwy logowania , zostaną zwrócone informacje o bieżącym kontekście zabezpieczeń. Jeśli parametr zawiera NULLwartość , SUSER_SID zwraca wartość NULL.

Param2

Dotyczy: SQL Server 2012 (11.x) i nowsze wersje

Określa, czy nazwa logowania jest weryfikowana. Parametrm2 jest typu int i jest opcjonalny. Gdy parametr Param2 ma wartość 0, nazwa logowania nie jest weryfikowana. Jeśli parametr Param2 nie jest określony jako 0, nazwa logowania systemu Windows jest weryfikowana tak samo jak nazwa logowania przechowywana w programie SQL Server.

Typy zwracane

varbinary(85)

Uwagi

SUSER_SID może być używany jako ograniczenie w elemecie DEFAULTALTER TABLE lub CREATE TABLE. SUSER_SID można użyć na liście wyboru, w klauzuli WHERE i w dowolnym miejscu, w jakim jest dozwolone wyrażenie. SUSER_SID musi zawsze być po nawiasach, nawet jeśli nie określono żadnego parametru.

Po wywołaniu bez argumentu SUSER_SID zwraca identyfikator SID bieżącego kontekstu zabezpieczeń. Po wywołaniu bez argumentu w partii, która przełączyła kontekst przy użyciu polecenia EXECUTE AS, SUSER_SID zwraca identyfikator SID personifikowanego kontekstu. Po wywołaniu z kontekstu SUSER_SID(ORIGINAL_LOGIN()) personifikowanego zwraca identyfikator SID oryginalnego kontekstu.

Gdy sortowanie programu SQL Server i sortowanie systemu Windows są inne, może zakończyć się niepowodzeniem, SUSER_SID gdy program SQL Server i system Windows przechowują dane logowania w innym formacie. Jeśli na przykład komputer z systemem TestComputer Windows ma identyfikator logowania, a program SQL Server przechowuje identyfikator logowania User jako TESTCOMPUTER\User, wyszukiwanie identyfikatora logowania TestComputer\User może zakończyć się niepowodzeniem, aby poprawnie rozpoznać nazwę logowania. Aby pominąć tę walidację nazwy logowania, użyj parametru Param2. Różne sortowania są często przyczyną błędu programu SQL Server 15401: Windows NT user or group '%s' not found. Check the name again.

Uwagi dotyczące usługi Azure SQL Database, bazy danych SQL w sieci szkieletowej

SUSER_SID zawsze zwraca identyfikator SID logowania dla bieżącego kontekstu zabezpieczeń. Użyj sys.database_principals , aby uzyskać identyfikator SID innego identyfikatora logowania.

Instrukcja SUSER_SID nie obsługuje wykonywania przy użyciu personifikowanego kontekstu zabezpieczeń za pośrednictwem metody EXECUTE AS.

Przykłady

A. Korzystanie z SUSER_SID

Poniższy przykład zwraca numer identyfikacyjny zabezpieczeń (SID) dla bieżącego kontekstu zabezpieczeń.

SELECT SUSER_SID();

B. Używanie SUSER_SID z określonym identyfikatorem logowania

Dotyczy: SQL Server 2012 (11.x) i nowsze wersje

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

SELECT SUSER_SID('sa');
GO

C. Używanie SUSER_SID z nazwą użytkownika systemu Windows

Dotyczy: SQL Server 2012 (11.x) i nowsze wersje

Poniższy przykład zwraca numer identyfikacyjny zabezpieczeń użytkownika systemu Windows London\Workstation1.

SELECT SUSER_SID('London\Workstation1');
GO

D. Używanie SUSER_SID jako ograniczenia DOMYŚLNEgo

W poniższym przykładzie użyto SUSER_SIDDEFAULT go jako ograniczenia w instrukcji CREATE TABLE .

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. Porównaj nazwę logowania systemu Windows z nazwą logowania przechowywaną w programie SQL Server

Dotyczy: SQL Server 2012 (11.x) i nowsze wersje

W poniższym przykładzie pokazano, jak używać parametru Param2 do uzyskania identyfikatora SID z systemu Windows i używa tego identyfikatora SID jako danych wejściowych SUSER_SNAME do funkcji. W przykładzie przedstawiono identyfikator logowania w formacie, w którym jest przechowywany w systemie Windows (TestComputer\User) i zwraca identyfikator logowania w formacie, w którym jest przechowywany w programie SQL Server (TESTCOMPUTER\User).

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