web-dev-qa-db-ja.com

ストアドプロシージャの内容への読み取り専用アクセス

開発者が運用データベースのストアドプロシージャのコンテンツに読み取り専用でアクセスできるようにSQL Serverを設定することはできますか?

26
adam0101

それらを許可VIEW DEFINITIONそれらのprocに対する特権、こちらを参照してください http://msdn.Microsoft.com/en-us/library/ms175808.aspx

有る

  • サーバースコープ

  • データベースの範囲

  • スキーマスコープ

  • 個々のエンティティ

クエリを使用してスクリプトを生成することもできます。あなたがユーザーボブを持っている場合

select 'GRANT VIEW DEFINITION ON ' + quotename(specific_schema) 
+ '.' + quotename(specific_name)
+ ' TO ' + 'BOB'
  from INFORMATION_SCHEMA.routines
where routine_type = 'PROCEDURE'

それはあなたにこのようなものを与えるでしょう、そしてあなたはそれを走らせることができます

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

Dboのスキーマスコープレベルで行う例。

スキーマ:: [dbo]のビュー定義をBOBに付与します

[〜#〜] msdn [〜#〜]

9
slachterman

ドメインアカウントへのアクセスを許可する必要がありました。このための構文は

スキーマのビュー定義を許可します:: [dbo] to "domain\BOB"

6
Alex K.

すべてのdbプロシージャの私のバリアント:

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

私はこれが質問への応答が遅いことを知っていますが、少なくともSQL管理スタジオ2014で答えを探している(ちょうど数分前にした)人々のために、あなたはユーザーアカウントを編集し、 SECURABLES領域で権限を選択し、VIEWでアクセスするすべてのボックスにチェックマークを付けます。

これにより、スクリプトを実行せずに上記のことが実行されます。

0
user202944