Warum gibt es keine integrierte Datenbank für die Ausführungsdatenbank für „gespeicherte Prozeduren“?

StackOverflow https://stackoverflow.com/questions/4239761

Frage

Ich habe mich immer gefragt, warum die Liste der Datenbankrollen (db_datareader, db_datawriter, db_ddladmin, usw.) nie ein enthalten a db_storedprocedureexecutor. Die anderen machen Sinn, aber es scheint, als ob es in der Lage zu sein scheint, die Fähigkeit zu gewähren, alle gespeicherten Procs an einen bestimmten Benutzer auszuführen (ohne sie zu gewähren db_owner, was der einzige andere Weg ist, um dasselbe zu erreichen) wäre eine praktische Sache.

Angenommen, ich möchte allen meinen Entwicklern die Rechte auf gespeicherte Verfahren geben, während sie keine DDL ausführen lassen - ohne explizit ausführende Ausführung für jedes gespeicherte Verfahren zu erteilen (und dann daran zu erinnern, die neuen hinzuzufügen, wenn zusätzliche SPs eingesetzt werden). Es gibt keine Möglichkeit, dies zu tun (ich weiß, dass SPs DDL enthalten können, sodass sie auf diese Weise möglicherweise indirekt auf DDL zugelassen werden können).

Wenn ich ein Bewerbungsdienstkonto und eine Reihe gespeicherter Verfahren habe, die mit meinem Antrag einhergehen, muss ich jedem SP explizit Rechte gewähren Rolle, damit sie alles aktualisieren/löschen können, was sie wollen.

Obwohl es anfangs offensichtlich schien, bin ich mir jetzt nicht sicher, warum diese Rolle auf dem Datenbankserver fehlt - kann jemand eine Erklärung dafür anbieten, warum dies eine schreckliche Idee ist (wie ich davon ausnehme, oder es würde bereits existieren)?

BEARBEITEN:

Scheint, dass ich nicht der einzige mit dieser Erwartung bin - und Es hat mit einer Handvoll T-SQL herumgearbeitet (Es scheint, dass Sie eine Decke ausführen können, was ich nicht wusste, dass Sie es tun konnten), was mich nur frage, warum es nicht Standard ist!

War es hilfreich?

Lösung

Wenn Sie Schemas verwenden, müssen Sie nur GRANT EXECUTE ON SCHEMA::storedprocschema

z.B CREATE PROC storedprocschema.DoStuff ...

Warum, keine Ahnung ...

Andere Tipps

Denn wenn Sie alle gespeicherten Prozeduren ausführen können, können Sie ausführen sp_addrolemember, und du kannst alles tun, was a database_owner kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top