SETUSER (Transact-SQL)
Consente a un membro del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner 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 utilizzare EXECUTE AS. |
Sintassi
SETUSER [ 'username' [ WITH NORESET ] ]
Argomenti
'username'
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 e al ruolo predefinito del database db_owner di adottare l'identità di un altro utente in modo da verificarne le autorizzazioni.
Utilizzare 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, tale tabella è di proprietà dell'utente Margaret, 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 al ruolo predefinito del database db_owner.
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
SETUSER
Vedere anche