Kann SQL Server so eingerichtet werden, dass Entwickler schreibgeschützten Zugriff auf den Inhalt gespeicherter Prozeduren in unserer Produktionsdatenbank haben?
Erteilen Sie ihnen VIEW DEFINITION
-Privileg für diese Prozeduren, siehe hier http://msdn.Microsoft.com/en-us/library/ms175808.aspx
Es gibt
Serverumfang
Datenbankumfang
Schemaumfang
Einzelne Entitäten
sie können eine Abfrage auch verwenden, um ein Skript zu generieren. Wenn Sie also einen Benutzer haben, Bob
select 'GRANT VIEW DEFINITION ON ' + quotename(specific_schema)
+ '.' + quotename(specific_name)
+ ' TO ' + 'BOB'
from INFORMATION_SCHEMA.routines
where routine_type = 'PROCEDURE'
Das gibt Ihnen so etwas, das Sie dann ausführen können
GRANT VIEW DEFINITION ON [dbo].[aspnet_RegisterSchemaVersion] TO BOB
GRANT VIEW DEFINITION ON [dbo].[aspnet_CheckSchemaVersion] TO BOB
GRANT VIEW DEFINITION ON [dbo].[aspnet_Applications_CreateApplication] TO BOB
Beispiel für ein Vorgehen auf Schemaebene für dbo.
ansichtsdefinition für Schema :: [Dbo] an BOB gewähren
Ich musste Zugriff auf ein Domänenkonto gewähren. Die Syntax dafür war
ansichtsdefinition für Schema gewähren :: [dbo] an "Domäne\BOB"
Meine Variante für alle DB-Prozeduren:
select 'GRANT VIEW DEFINITION ON [' + schema_name(schema_id) + '].[' + name +
'] TO ' + '[domain\username]'
from sys.all_objects
where type_desc = 'SQL_STORED_PROCEDURE'
and schema_id <> schema_id('sys')
Ich weiß, dass dies zu spät ist, als Antwort auf die Frage, aber für die Leute, die hierhergekommen sind, um eine Antwort zu finden (genau wie ich es vor einigen Minuten getan habe), zumindest in SQL Management Studio 2014, können Sie das Benutzerkonto bearbeiten und die Berechtigungen im Bereich SECURABLES und markieren Sie alle Kontrollkästchen in VIEW, auf die Sie Zugriff haben sollen.
Dies erledigt das obige, ohne dass Skripts ausgeführt werden müssen.