• 締切済み

ストアドのEXECUTE権限

ACCESSのADPからストアドを実行するためにに、各ストアドの 「publicデータベースロール」でストアドの実行権限を「許可」にすればいいのかと思いますが、 一つずつ作業するのは面倒なので、実行権限を一括して付与する方法は ありませんでしょうか?

みんなの回答

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.3

#1,#2です。 ・・そうですか。それは知りませんでした。 確かにGRANT EXECUTE TO (ユーザ)でいけそうですね。 設定した結果がユーザのプロパティでは確認できないみたいですが、 データベースのプロパティからは確認できます。 (もしくはsys.database_permissions) ということは、個別に指定しなくてもよさそうですね。

SEsyo
質問者

お礼

遅くなりした・・・いろいろ試しているのですがイマイチしっくり来ません。 時間が出来たときにゆっくり試してみます、ありがとうございました。

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.2

#1です。 そういう意味だとすると、楽な方法は私は知りません。 私のところでも、特定の目的のためにデータベース内の全てのストアドの実行権限をロールに付与したいケースはあるのですが、 「権限のついていないストアドがあったら権限を付与する」というストアドを書き、スケジュール実行させているくらいです。

SEsyo
質問者

補足

了解しました、GRANT文をスケジュールで実行させる事を検討してみます。 もう一つ判れば教えて下さい。 データベースユーザに「セキュリティ保護可能なリソース」のオブジェクトにデータベースを追加し、その権限で「実行」を選択してOKを押すと、正常に終了します。 しかし、再度開くと「セキュリティ保護可能なリソース」からデータベースは消えてしまってます。 ただもう一度データベースを追加すると実行権限にはチェックが入っています。 OKを押すと消えてしまうと云うことは設定できないと云うことでしょうか?

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

オペレーションでやるなら、個別オブジェクトのプロパティからやるのではなく、セキュリティのユーザまたはロールのプロパティからやるのが一般的ではないかと思います。 (セキュリティ保護可能なリソースに追加するのですが、ストアドプロシージャを一気に選択して付与できるので) それすら面倒ならコマンドでやりましょう(sys.procedureからリストを取り、EXCELか何かでGRANT文を作って、貼りつけて実行すれば) GRANT EXECUTE ON ストアド TO ユーザ/ロール ところで、個別のユーザにはdatareader/datawriterくらいが付与されているということでしょうか? 何かデータベースロールを作って、それにストアドプロシージャのEXEC権限を付与し、そのロールを各ユーザに割り当てた方がいい気がしますが。。 publicにEXEC権限を付与してしまうと「誰でも実行可能」になりますよ。

SEsyo
質問者

補足

いつも回答ありがとうございます。 > セキュリティ保護可能なリソースに追加するのですが、ストアドプロシージャを一気に選択して付与できるので ストアドを一気に選択する方法が解りません。(リソースに追加するのは一気にできたのですが、実行権限を一気に付与する方法が解りません) > それすら面倒ならコマンドでやりましょう ストアドを追加する都度この作業をするのは避けたいのです。 > ところで、個別のユーザにはdatareader/datawriterくらいが付与されているということでしょうか? ownerが付与してあります。 SSMSではストアドの実行が出来るのですが、ACCESSからだとログインにsysadminが付与してあるか、オブジェクト単位に実行権限を付与しないと、実行できない状況です。 > 何かデータベースロールを作って、それにストアドプロシージャのEXEC権限を付与し、そのロールを各ユーザに割り当てた方がいい気がしますが。 この方法でと思いますが、結局ストアドを追加すると付与作業が必要だと思います、テーブルを追加してもオブジェクト単位での付与作業が不要なのと同様には出来ないものなのでしょうか?

関連するQ&A