Domanda

Mi sono sempre chiesto perché l'elenco dei ruoli di database (db_datareader, db_datawriter, db_ddladmin, ecc.) Non ha mai incluso un db_storedprocedureexecutor. Gli altri hanno senso, ma sembra essere in grado di concedere la possibilità di eseguire tutti i proc memorizzati a un determinato utente (senza concederli db_owner, che è l'unico altro modo per realizzare la stessa cosa) sarebbe una cosa utile.

Ad esempio, supponiamo che io voglia dare a tutti i miei sviluppatori i diritti di eseguire procedure memorizzate, pur non lasciandoli eseguire alcun DDL - senza concedere esplicitamente l'esecuzione su ogni procedura memorizzata (e quindi ricordando di aggiungere quelli nuovi quando vengono distribuiti SP aggiuntivi) , non c'è modo di farlo (so che gli SP possono contenere DDL, quindi potrebbe ancora essere consentito indirettamente l'accesso a DDL in questo modo).

Se ho un account di servizio di applicazione e una serie di procedure memorizzate che accompagnano la mia domanda, devo concedere esplicitamente i diritti a ogni SP (dal momento che non voglio concedere il mio account di servizio di applicazione DBO), mentre posso usare un Ruolo per consentire loro di aggiornare/eliminare tutto ciò che vogliono.

Anche se inizialmente sembrava ovvio, ora non sono sicuro del perché questo ruolo manchi dal server di database - qualcuno può offrire una spiegazione del perché questa è un'idea terribile (come presumo, o esisterebbe già)?

MODIFICARE:

Sembra che non sia l'unico con questa aspettativa - e Ha funzionato con una manciata di T-SQL (Sembra che tu possa concedere una coperta Esegui, cosa che non sapevo che potessi fare), il che mi lascia solo chiedermi perché non è standard!

È stato utile?

Soluzione

Se usi schemi, allora devi solo GRANT EXECUTE ON SCHEMA::storedprocschema

per esempio CREATE PROC storedprocschema.DoStuff ...

Quanto al perché, non ho idea ...

Altri suggerimenti

Perché se è possibile eseguire tutte le procedure memorizzate, è possibile eseguire sp_addrolemember, e puoi fare tutto ciò che a database_owner Potere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top