Megosztás a következőn keresztül:


SUSER_SID (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

A megadott bejelentkezési név biztonsági azonosítószámát (SID) adja vissza.

Transact-SQL szintaxis konvenciók

Szemantika

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

Arguments

'* bejelentkezés *'

A következőkre vonatkozik: SQL Server 2008 (10.0.x) és újabb verziók

A felhasználó bejelentkezési neve. a bejelentkezéssysname. a bejelentkezés, amely nem kötelező, lehet SQL Server-bejelentkezés vagy Microsoft Windows-felhasználó vagy -csoport. Ha nincs megadva bejelentkezés , a rendszer az aktuális biztonsági környezettel kapcsolatos információkat adja vissza. Ha a paraméter tartalmaz NULL, SUSER_SID a visszaadott értéket NULLadja vissza.

Param2

A következőkre vonatkozik: SQL Server 2012 (11.x) és újabb verziók

Megadja, hogy a bejelentkezési név érvényesítve van-e. A Param2int típusú, és nem kötelező. Ha a Param2 0, a rendszer nem érvényesíti a bejelentkezési nevet. Ha a Param2 nincs 0-ként megadva, a Rendszer ellenőrzi, hogy a Windows bejelentkezési neve pontosan megegyezik-e az SQL Serverben tárolt bejelentkezési névvel.

Visszatérési típusok

varbinary(85)

Megjegyzések

SUSER_SID A korlátozásként DEFAULT használható a következőben: ALTER TABLECREATE TABLEvagy . SUSER_SID egy kijelölési listában, egy WHERE záradékban és bárhol használható, ahol egy kifejezés engedélyezve van. SUSER_SID zárójelek mindig követendők, még akkor is, ha nincs megadva paraméter.

Ha argumentum nélkül hívjuk meg, SUSER_SID az aktuális biztonsági környezet BIZTONSÁGI azonosítóját adja vissza. Ha argumentum nélkül hív meg egy olyan kötegen belül, amely a használatával EXECUTE ASmódosította a környezetet, SUSER_SID a megszemélyesített környezet SID-ét adja vissza. Ha megszemélyesített környezetből hívjuk meg, SUSER_SID(ORIGINAL_LOGIN()) az eredeti környezet SID-ét adja vissza.

Ha az SQL Server rendezése és a Windows-rendezés eltérő, sikertelen lehet, SUSER_SID ha az SQL Server és a Windows más formátumban tárolja a bejelentkezést. Ha például a Windows-számítógép TestComputer rendelkezik a bejelentkezéssel User , és az SQL Server a bejelentkezést a TESTCOMPUTER\Userkövetkezőképpen tárolja, előfordulhat, hogy a bejelentkezés TestComputer\User keresése nem oldja fel megfelelően a bejelentkezési nevet. A bejelentkezési név ellenőrzésének kihagyásához használja a Param2 parancsot. A különböző rendezések gyakran az 15401-ben előforduló SQL Server-hiba okai: Windows NT user or group '%s' not found. Check the name again.

Megjegyzések az Azure SQL Database-hez és az SQL Database-hez a Fabricben

SUSER_SID mindig adja vissza a bejelentkezési SID-t az aktuális biztonsági környezethez. A sys.database_principals használatával szerezze be egy másik bejelentkezés SID-azonosítóját.

Az SUSER_SID utasítás nem támogatja a megszemélyesített biztonsági környezettel EXECUTE AStörténő végrehajtást.

Példák

A. SUSER_SID használata

Az alábbi példa az aktuális biztonsági környezet biztonsági azonosító számát (SID) adja vissza.

SELECT SUSER_SID();

B. SUSER_SID használata adott bejelentkezéssel

A következőkre vonatkozik: SQL Server 2012 (11.x) és újabb verziók

Az alábbi példa az SQL Server-bejelentkezés sa biztonsági azonosító számát adja vissza.

SELECT SUSER_SID('sa');
GO

C. SUSER_SID használata Windows-felhasználónévvel

A következőkre vonatkozik: SQL Server 2012 (11.x) és újabb verziók

Az alábbi példa a Windows-felhasználó London\Workstation1biztonsági azonosító számát adja vissza.

SELECT SUSER_SID('London\Workstation1');
GO

D. A SUSER_SID használata ALAPÉRTELMEZETT kényszerként

Az alábbi példa kényszerként SUSER_SID használ DEFAULT egy CREATE TABLE utasításban.

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. A Windows bejelentkezési nevének összehasonlítása az SQL Serverben tárolt bejelentkezési névvel

A következőkre vonatkozik: SQL Server 2012 (11.x) és újabb verziók

Az alábbi példa bemutatja, hogyan lehet a Param2 használatával beszerezni a SID-t a Windowsból, és hogyan használhatja ezt a SID-t a SUSER_SNAME függvény bemeneteként. A példa a bejelentkezést a Windowsban (TestComputer\User) tárolt formátumban adja vissza, és a bejelentkezést az SQL Serverben (TESTCOMPUTER\User) tárolt formátumban adja vissza.

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