Ciao,
per consentire la SELECT su tutte le tabelle del database puoi usare il ruolo db_datareader.
Per assegnare il permesso al singolo utente:
USE mydb
GO
-- Consente l'accesso della login phantom
-- come user phantom nel database corrente
EXEC sp_grantdbaccess 'phantom', 'phantom'
GO
-- Aggiunge lo user phantom al ruolo db_datareader
EXEC sp_addrolemember 'db_datareader', 'phantom'
GO
Per assegnare il permesso a tutti i database puoi farlo via T-SQL:
EXEC sp_MSForEachDB
'USE ?
IF DBID() >= 5 EXEC sp_addrolemember ''db_datareader'', ''phantom'' '
Per rendere tutti i nuovi databases che crei leggibili da questo utente, basta aggiungerlo come db_datareader al database MODEL. Ogni volta che crei un nuovo database infatti viene allocato lo spazio fisico della dimensione richiesta e ci vengono copiati
gli oggetti contenuti nel model. Permessi compresi.
Ovviamente fai molta attenzione: in questo modo TUTTI i nuovi databases saranno leggibili da questo utente. Occhio quindi alle eccezioni !!!
HTH
Danilo Dominici MCP MCDBA MCITP MCSE MCAD Questo post è fornito "così com'è". Non conferisce garanzie o diritti di alcun tipo. Ricorda di usare la funzione "segna come risposta" per i post che ti hanno aiutato a risolvere il problema
e "deseleziona come risposta" quando le risposte segnate non sono effettivamente utili. Questo è particolarmente utile per altri utenti che leggono il thread, alla ricerca di soluzioni a problemi similari. ENG: This posting is provided "AS IS"
with no warranties, and confers no rights. Please remember to click "Mark as Answer" on the post that helps you, and to click "Unmark as Answer" if a marked post does not actually answer your question. This can be beneficial to other community
members reading the thread.