SETUSER (Transact-SQL)

Si applica a:SQL ServerIstanza 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 è incluso solo per compatibilità retroattiva. SETUSERpotrebbe non essere supportato in una futura versione di SQL Server. È consigliabile utilizzare EXECUTE AS in alternativa.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

  
SETUSER [ 'username' [ WITH NORESET ] ]   

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.

CON NORESET
Specifica che le istruzioni successive SETUSER (senza nome utente specificato) non dovrebbero reimpostare l'identità utente a amministratore di sistema o proprietario del database.

Osservazioni:

SETUSER può essere utilizzato da un membro del ruolo fisso di sysadmin o dal proprietario di un database per adottare l'identità di un altro utente e testare i permessi dell'altro utente. L'appartenenza al ruolo predefinito del database db_owner non è sufficiente.

Da usare SETUSER solo con utenti di SQL Server. SETUSERnon è supportata dagli utenti Windows. Quando SETUSER è stato usato per assumere l'identità di un altro utente, qualsiasi oggetto creato dall'utente che si impersonerà è di proprietà dell'utente impersonato. 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.

SETUSER rimane in funzione fino a quando non viene emessa un'altra SETUSER dichiarazione o fino a quando il database attuale non viene modificato con l'istruzione USE.

Nota

Se SETUSER viene utilizzato WITH NORESET, il proprietario del database o l'amministratore di sistema deve disconnettersi e poi tornare a effettuare il login per ristabilire i propri diritti.

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. Usando SETUSER, il proprietario del database si mary impersonerebbe per concedere all'utente joe l'accesso alla computer_types tabella e poi resettò 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)
USA (Transact-SQL)