Ho un database con un ruolo di applicazione. I membri del ruolo appartengono tutti a un gruppo in Active Directory. Invece di assegnare al ruolo le autorizzazioni per selezionare dalle tabelle, ho assegnato al ruolo autorizzazioni di esecuzione su tutte le stored procedure che è necessario chiamare.Permessi SQL Server su Processi memorizzati con SQL dinamico
Questo funziona benissimo tranne che per una delle mie stored procedure che crea un po 'di SQL dinamico e chiama sp_executesql.
SQL dinamica sembra un po 'come questo:
SET @SQL = N'
SELECT *
FROM dbo.uvView1
INNER JOIN uvView2 ON uvView1.Id = uvView2.Id'
EXEC sp_executesql @SQL
Gli utenti in questo ruolo non riescono a chiamare la stored procedure. Si dà il seguente errore che è una specie di previsto suppongo:
Il permesso SELECT è stato negato sull'oggetto 'uvView1', database 'Foobar', schema 'dbo'.
Esiste un modo per consentire ai miei utenti di eseguire correttamente questo processo senza assegnare le autorizzazioni di ruolo a tutte le viste nell'SQL dinamico?
L'utente accede alla vista, giusto? Non credo che la sicurezza si preoccupi di come accedervi. – JNK
Questo è l'unico processo che ha esito negativo e non ha esito negativo con le autorizzazioni di esecuzione sul proc ... in particolare mi sta dicendo che è possibile selezionare dalla vista ... quindi sto indovinando che importa in qualche modo. – Dismissile