wake-up-neo.net

Nur lesender Zugriff auf gespeicherte Prozedurinhalte

Kann SQL Server so eingerichtet werden, dass Entwickler schreibgeschützten Zugriff auf den Inhalt gespeicherter Prozeduren in unserer Produktionsdatenbank haben?

26
adam0101

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
42
SQLMenace

Beispiel für ein Vorgehen auf Schemaebene für dbo.

ansichtsdefinition für Schema :: [Dbo] an BOB gewähren

MSDN

9
slachterman

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"

6
Alex K.

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')
1
user4319873

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.

0
user202944