SETUSER (Transact-SQL)

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

Consente a un membro del ruolo predefinito del server sysadmin o al proprietario di un database di rappresentare un altro utente.

Importante

SETUSER è disponibile solo per garantire la compatibilità con le versioni precedenti in quanto nelle future versioni di SQL Server potrebbe non essere più supportata. È invece consigliabile usare EXECUTE AS.

Convenzioni di sintassi Transact-SQL

Sintassi

  
SETUSER [ 'username' [ WITH NORESET ] ]   

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

'username'
Il nome di un utente di SQL Server o di Windows nel database corrente che viene rappresentato. Se username viene omesso, viene ripristinata l'identità originale dell'amministratore di sistema o del proprietario del database che rappresenta l'utente.

WITH NORESET
Specifica che le istruzioni SETUSER successive (prive di argomento username) non ripristinano l'identità dell'utente sull'amministratore di sistema o sul proprietario del database.

Osservazioni:

L'istruzione SETUSER consente ai membri del ruolo predefinito del server sysadmin o al proprietario di un database di adottare l'identità di un altro utente in modo da verificarne le autorizzazioni. L'appartenenza al ruolo predefinito del database db_owner non è sufficiente.

Usare l'istruzione SETUSER solo per utenti di SQL Server, in quanto non è supportata per gli utenti di Windows. Dopo l'esecuzione di SETUSER per assumere l'identità di un altro utente, tutti gli oggetti che vengono creati sono di proprietà dell'utente rappresentato. Se ad esempio il proprietario del database assume l'identità dell'utente Margaret e crea la tabella orders, la tabella orders è di proprietà dell'utente Margaret e non dell'amministratore del sistema.

L'istruzione SETUSER rimane valida fino a quando non viene eseguita un'altra istruzione SETUSER o il database corrente viene modificato tramite l'istruzione USE.

Nota

Se il proprietario del database o l'amministratore del sistema utilizza l'istruzione SETUSER WITH NORESET, per ristabilire le proprie autorizzazioni deve disconnettersi e quindi riconnettersi.

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del server sysadmin o la proprietà del database. L'appartenenza al ruolo predefinito del database db_owner non è sufficiente.

Esempi

Nell'esempio seguente viene illustrato come il proprietario del database può adottare l'identità di un altro utente. L'utente mary ha creato una tabella denominata computer_types. Tramite l'istruzione SETUSER, il proprietario del database rappresenta mary per concedere all'utente joe l'accesso alla tabella computer_types e quindi ripristina la propria identità.

SETUSER 'mary';  
GO  
GRANT SELECT ON computer_types TO joe;  
GO  
--To revert to the original user  
SETUSER;  

Vedi anche

DENY (Transact-SQL)
GRANT (Transact-SQL)
REVOKE (Transact-SQL)
USE (Transact-SQL)