Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
Database SQL di
AzureIstanza gestita di SQL di
AzureDatabase SQL in Microsoft Fabric
Restituisce l'ID di sicurezza (SID) per il nome dell'account di accesso specificato.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
SUSER_SID ( [ 'login' ] [ , Param2 ] )
Argomenti
'* login *'
Si applica a: SQL Server 2008 (10.0.x) e versioni successive
Nome dell'account di accesso dell'utente.
login è di tipo sysname. Il parametro facoltativo login può essere un account di accesso di SQL Server oppure un utente o un gruppo di Microsoft Windows. Se login viene omesso, vengono restituite informazioni sul contesto di sicurezza corrente. Se il parametro contiene NULL, SUSER_SID restituisce NULL.
Param2
Si applica a: SQL Server 2012 (11.x) e versioni successive
Specifica se il nome di accesso viene convalidato. Param2 è di tipo int ed è facoltativo. Se Param2 è 0, il nome di account di accesso non è convalidato. Se per Param2 non è specificato 0, il nome di accesso di Windows viene considerato come identico al nome di account di accesso archiviato in SQL Server.
Tipi restituiti
varbinary(85)
Osservazioni:
SUSER_SID può essere usato come DEFAULT vincolo in ALTER TABLE o CREATE TABLE.
SUSER_SID può essere usato in un elenco di selezione, in una WHERE clausola e ovunque sia consentita un'espressione.
SUSER_SID deve essere sempre seguita da parentesi, anche se non viene specificato alcun parametro.
Quando viene chiamato senza un argomento, SUSER_SID restituisce il SID del contesto di sicurezza corrente. Quando viene chiamato senza un argomento all'interno di un batch che ha cambiato contesto tramite EXECUTE AS, SUSER_SID restituisce il SID del contesto rappresentato. Quando viene chiamato da un contesto rappresentato, SUSER_SID(ORIGINAL_LOGIN()) restituisce il SID del contesto originale.
Quando le regole di confronto di SQL Server e le regole di confronto di Windows sono diverse, SUSER_SID può non riuscire quando SQL Server e Windows archiviano l'account di accesso in un formato diverso. Ad esempio, se il computer TestComputer Windows dispone dell'account di accesso User e SQL Server archivia l'account di accesso come TESTCOMPUTER\User, la ricerca dell'account di accesso potrebbe non riuscire a risolvere correttamente il nome dell'account TestComputer\User di accesso. Per ignorare questa convalida del nome account di accesso, usare Param2. Le regole di confronto diverse sono spesso causa dell'errore di SQL Server 15401: Windows NT user or group '%s' not found. Check the name again.
Osservazioni per il database SQL di Azure, il database SQL in Fabric
SUSER_SID restituisce sempre il SID di accesso per il contesto di sicurezza corrente. Usare sys. database_principals per ottenere il SID di un account di accesso diverso.
L'istruzione SUSER_SID non supporta l'esecuzione usando un contesto di sicurezza rappresentato tramite EXECUTE AS.
Esempi
R. Usare SUSER_SID
Nell'esempio seguente viene restituito l'ID di sicurezza (SID) per il contesto di sicurezza corrente.
SELECT SUSER_SID();
B. Usare SUSER_SID con un account di accesso specifico
Si applica a: SQL Server 2012 (11.x) e versioni successive
Nell'esempio seguente viene restituito l'ID di sicurezza (SID) per l'account di accesso sa di SQL Server.
SELECT SUSER_SID('sa');
GO
C. Usare SUSER_SID con un nome utente di Windows
Si applica a: SQL Server 2012 (11.x) e versioni successive
Nell'esempio seguente viene restituito l'ID di sicurezza (SID) per l'utente di Windows London\Workstation1.
SELECT SUSER_SID('London\Workstation1');
GO
D. Usare SUSER_SID come vincolo DEFAULT
Nell'esempio seguente la funzione SUSER_SID viene utilizzata come vincolo DEFAULT in un'istruzione 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. Confrontare il nome dell'account di accesso di Windows con il nome di accesso archiviato in SQL Server
Si applica a: SQL Server 2012 (11.x) e versioni successive
Nell'esempio seguente viene illustrato come usare Param2 per ottenere il SID da Windows e usarlo come input per la funzione SUSER_SNAME. In questo esempio viene fornito l'account di accesso nel formato archiviato in Windows (TestComputer\User) e viene restituito l'account di accesso nel formato nel quale è archiviato in SQL Server (TESTCOMPUTER\User).
SELECT SUSER_SNAME(SUSER_SID('TestComputer\User', 0));