Condividi tramite


SUSER_SID (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure

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 nel parametro è inclusa la parola NULL, verrà restituito 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:

La funzione SUSER_SID può essere utilizzata come vincolo DEFAULT nell'istruzione ALTER TABLE o CREATE TABLE. È possibile utilizzare SUSER_SID in un elenco di selezione, in una clausola WHERE e in tutti i casi in cui è consentita un'espressione. SUSER_SID deve essere sempre seguita dalle parentesi, anche in assenza di parametri.

Se viene richiamata senza alcun argomento, la funzione SUSER_SID restituisce il SID del contesto di sicurezza corrente. Se richiamata senza alcun argomento all'interno di un batch per il quale il contesto è stato cambiato tramite EXECUTE AS, la funzione SUSER_SID restituisce il SID del contesto rappresentato. Se chiamata da un contesto rappresentato, SUSER_SID(ORIGINAL_LOGIN()) restituisce il SID del contesto originale.

Se le regole di confronto di SQL Server e quelle di Windows sono diverse, è possibile che SUSER_SID abbia esito negativo, qualora in SQL Server e Windows l'account di accesso venga archiviato in un diverso formato. Se ad esempio l'account di accesso del computer Windows TestComputer è User e in SQL Server l'account di accesso è archiviato come TESTCOMPUTER\User, è possibile che il nome di account di accesso non venga risolto correttamente durante la ricerca dell'account di accesso TestComputer\User. Per ignorare questa convalida del nome account di accesso, usare Param2. L'assegnazione di regole di confronto diverse spesso determina l'errore 15401 di SQL Server:

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

Osservazioni sul database Azure SQL

SUSER_SID restituisce sempre il SID dell'account 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 con un contesto di sicurezza rappresentato tramite EXECUTE AS.

Esempi

R. Utilizzo della funzione SUSER_SID

Nell'esempio seguente viene restituito l'ID di sicurezza (SID) per il contesto di sicurezza corrente.

SELECT SUSER_SID();  

B. Utilizzo di SUSER_SID con un account di accesso specifico

Nell'esempio seguente viene restituito l'ID di sicurezza (SID) per l'account di accesso sa di SQL Server.

Si applica a: SQL Server 2012 (11.x) e versioni successive

SELECT SUSER_SID('sa');  
GO  

C. Utilizzo della funzione SUSER_SID con un nome utente di Windows

Nell'esempio seguente viene restituito l'ID di sicurezza (SID) per l'utente di Windows London\Workstation1.

Si applica a: SQL Server 2012 (11.x) e versioni successive

SELECT SUSER_SID('London\Workstation1');  
GO  

D. Utilizzo della funzione 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. Confronto tra il nome di account di accesso di Windows e il nome di account di accesso archiviato in SQL Server

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

Si applica a: SQL Server 2012 (11.x) e versioni successive

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

Vedi anche

ORIGINAL_LOGIN (Transact-SQL)
CREATE TABLE (Transact-SQL)
binary e varbinary (Transact-SQL)
Funzioni di sistema (Transact-SQL)