none
Assegnare GRANT SELECT su ogni database ad un utente RRS feed

  • Domanda

  • Ciao a tutti,

    esiste un comando che permetta di assegnare ad un utente la grant di select su qualsiasi tabella di tutti i DB presenti?

    Il comando deve essere funzionale anche se creo un db nuovo e quindi non vorrei lanciare il comando di grant ad ogni creazione di db.

    In alternativa se c'è un ruolo da assegnare all'utente ben venga !!!

    Grazie!!!

    venerdì 25 maggio 2012 08:48

Risposte

  • 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.

    venerdì 25 maggio 2012 10:13