• 締切済み

ストアドのEXECUTE権限

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

  • SEsyo
  • お礼率78% (64/82)

みんなの回答

  • 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

  • プロシージャのexecute権限

    ストアドプロシージャを作成し、createまで行ったのですが、実行させようとしたらexecute権限がありません というエラーが出たので、 調べたみたのですが、grantというのでexecute権限を付与してあげなくては いけないと知りました。 grantの書き方について教えてください。 プロシージャ名:test サーバー名:testserve ユーザ名:test の場合、どのようにtestというプロシージャに実行権を与えればよいのでしょうか?

  • ユーザからADPのストアドプロシージャを修正できないようにする

    Microsoft Access2000のADPを通じて、MSDEを操作するデータベースを作成しました。 社内のユーザに ADPを変換したADEファイルを配付しようとしていますが、このままでは、ユーザが不用意にストアドプロシージャを修正してしまう恐れがあります。 ユーザからADEのストアドプロシージャを修正できないようにする方法はありませんでしょうか?

  • ユーザーに与える権限に付いて

    SQL Server2008でDBを管理しているのですが、 エンドユーザーに与える権限に付いて教えて下さい。 ACCESS ADPから接続してデータの登録、更新、削除を行ないます。 現在、ログインでsysadminをチェックしないと上記の作業が出来ません。 データベースユーザー全てのロールをチェックしてもログインで sysadminがチェックしてないと動作しません。 エンドユーザーのログインではsysadminをチェックしない方がいいと 考えるのですが、その場合各データベースのセキュリティはどのように 設定したらいいのでしょうか?

  • Mysqlの権限について質問させてください

    Mysqlの権限について質問させてください。 mysqlのバージョン5.5.8を使用し学習しておりますが、 ストアドプロシージャと権限に関してどうにかできないかと詰まっております。 Updateなどの更新権限は与えていない(Selectのみ権限の)ユーザに ストアドプロシージャの実行権限「EXECUTE」を追加付与したところ、 ストアドプロシージャを使用しての(Update等の)更新処理は行えてしまう。 上記のことが分かったのですが、下記の条件をクリアしたいです。 ・ゲストユーザの考えで、Selectのみのユーザを使用したい。 ・但し、更新処理の無い(Selectだけの)ストアドプロシージャは使えるようにしたい。 (PHPやVBなどのプログラム上で埋め込みSQLを使いたくない) 不可能なのか、もし可能な場合、方法など、 または代替案がありましたらご教授いただけませんでしょうか。 宜しくお願い致します。

    • ベストアンサー
    • MySQL
  • ストアドから別のストアドを作成できますか?

    パラメータ付きストアドから、そのパラメータを展開したSELECT文のストアドを作成する事は可能でしょうか? アクセスのデータシートビューを表示するにはパラメータがあっても指定出来ないようなんです。 「DoCmd.OpenStoredProcedure」でパラメータ付きのストアドを実行すると、 パラメータ用のインプットボックスが表示されその都度入力しなくてはなりません。 そこで、アクセスから@フィールド名 と @テーブル名 をパラメータとしてストアドを実行し、 ストアドで「SELECT @フィールド名 from @テーブル名」パラメータを展開したSELECT文にして、 別の名前を付けたパラメータ無しのストアドとして登録し、そのストアドを アクセスの「DoCmd.OpenStoredProcedure」で実行すれば、目的のデータシートビューを表示出来ると考えました。 ストアドからストアドを作成できるのでしょうか、可能であれば方法を教えて下さい。

  • 付与されてしまったアクセス権限を元に戻したい

    【デフォルト状態】 windows 8 64bit ローカルアカウント:test1(管理者) ローカルアカウント:test2(標準) C:\Users\test1以下に付与されてしまったユーザtest2のアクセス許可権限を一括で消す(アクセス権限が付与される前の状態に戻す)には どうしたらよいでしょうか? 【デフォルト状態】ではtest2ユーザはC:\Users\test1にアクセスできないのはいいのですが 試しにわざとユーザtest2の権限を管理者に変更し、C:\Users\test1にアクセスさせたら C:\Users\test1以下のファイルやフォルダにtest2のアクセス許可が付与されてしまいました。 ユーザtest2の権限を標準に戻してもC:\Users\test1にアクセスできる状態は変わりません。 ユーザtest2がC:\Users\test1にアクセスできないように、アクセス権限が付与される前の状態に戻したいです。 【試したこと】 C:\Users\test1を右クリック→プロパティ→「セキュリティ」タブ ユーザtest2を選択し、アクセス許可を変更をクリック(編集)。 「test1のアクセス許可画面」でtest2を選択し、削除ボタンをクリックし適用を押したら 処理が行われ、途中で「セキュリティ情報を適用中にエラーが発生しました」 コンテナ内のオブジェクトを列挙できませんでした。アクセスが否定されています。 と出てます。 続行ボタンを押すと処理が続行しますが、途中でまた「セキュリティ情報を適用中にエラーが発生しました」 という感じで何度も出ます。 test2のアカウントを削除して新しいアカウントを作るのが簡単なのでしょうが 都合上アカウント名を変えるのはやりたくないのでアクセス権限を消す(戻す)方法でお願いします。

  • ストアドプロシージャ

    MySQLでストアドプロシージャを使おうと思ったのですが、root権限でないと実行も定義もできません。 他のユーザーに権限を与えるにはどうしたらいいでしょうか? userテーブルのExecute_privの値は関係ありますか?

    • ベストアンサー
    • MySQL
  • 全ストアドを対象に文字列を置換する方法について

    こんばんわ。 SQLServer2008にて1データベース内の全ストアドを対象に、 ストアドプロシージャ記述内で特定の文字列を検索し、置換する方法を考えています。 以下のようなsqlで、ストアド内に文字列があるものを検索することはできたのですが、 ここから先、「★★★」を「○○○」にREPLACEする方法がわかりません。 select routine_name from information_schema.routines where routine_definition LIKE '%★★★%' and routine_type='procedure' 以下のようなsqlで更新しようとしたら、エラーが発生しました。 update information_schema.routines set routine_definition = REPLACE(routine_definition, '★★★', '○○○') where routine_name = 'XXX' (error:システム カタログへのアドホック更新は許可されません。) 不定期にデータベース名を変更することがあり、ストアドの数が多いため、 一括で変換できる方法がないかと探しています。 手作業で変更していく他ないでしょうか。 なにかヒントだけでもご教示いただけると嬉しいです。 よろしくお願いします。

  • SQLServer2005のストアドプロシージャのデバックの設定方法をご教示ください

    SQLServer2005でストアドプロシージャを作成しました。 VisualStudioを使用すればデバッグ(一行ずつ実行して、変数の中身や動作を確認)できるということですが、設定がうまくできません。 ストアドプロシージャ作成は初めてで、周りにも経験者がいないため解決策がわからない状態です。 ご存知の方、気がついたことがある方は、ぜひご教示ください。 ■■ マシン環境 ■■ OS:Windows2003Server DB:SQLServer2005 ■■ 試した方法 ■■ 1.DBサーバマシンのVisualStdio2005を使用 上記マシンに、SQLServer2005をインストールしたとき、  VisualStudio2005が自動的にインストールされたので これを使用することを考えました。 VisualStudio2005の「サーバーエクスプローラー」に、 今回作成したストアドプロシージャを表示するところまではできたのですが、 デバッグ実行できません。 メニューから「ストアドプロシージャのステップイン」を選択してデバッグウインドウを表示するらしいのですが メニューには、以下のものしか表示されません。  新しいプロシージャの追加 / 開く / 実行 ためしに実行すると、ストアドプロシージャは動作します (テーブルへのデータINSERTをストアドでコーディングしており、実行後に指定値が入っていたため) しかし、デバッグポイントを設定できず、ステップ実行もできません。 2.別マシンのVisualStdio2003を使用 私の開発マシンにはVisual Studio 2003が入っているため、 DBサーバマシンとリモートで接続して、上記と同様の設定を行いました (このVisual Studio2003はC#開発用にインストールしたものです)。 こちらは、メニューに「ストアドプロシージャのステップイン」が出ました。しかし……。 メニューから「ストアドプロシージャのステップイン」を選択してデバッグウインドウが表示されたときに、以下のメッセージボックスが出ます。 「SQL Server データベースが正しくセットアップされていないか、またはユーザーに master.sp_sdidebug を実行する権限がないため、ストアド プロシージャをデバッグできません。」 デバッグウインドウ上でデバッグポイントは設定できますが、 ストアドプロシージャを実行してもデバッグポイントでとまらず ステップ実行もできません。 (同様にINSERTしたテーブル値から、ストアド自体は動作していると判断) なお、1.2.共にSA認証でSQLServer2005にログオンしています。 SQLServer のデバッグできるのは、sysadminサーバロールを持つユーザだけらしいですが、 SA認証で使用しているユーザには「sysadmin」のサーバロールは設定しています。 ■■ 質問 ■■ 1) QLServer2005インストールで自動的にインストールされるVisualStudioでは、 ストアドプロシージャのデバッグはできないのでしょうか? それとも、SQLServer2005インストール時に、開発環境等の追加設定や、 別途VisualStudio2005をインストールする必要があるのでしょうか? それとも、別にSQLServer management Studioや構成ツール等で設定が必要なのでしょうか? または、メニューに「ストアドプロシージャのステップイン」を出す設定(方法)をご存知の方、ご教示をお願いします。 2) 「SQL Server データベースが正しくセットアップされていないか、またはユーザーに master.sp_sdidebug を実行する権限がないため、ストアド プロシージャをデバッグできません。」 このメッセージはどうすれば回避できるのでしょうか? SQL Server データベースが正しくセットアップされていないということですが、 これまで特に支障がないため問題はないと思っているのですが……。 検索で以下のサイトを見つけましたが、SQLServer2000のため参考になるかは疑問です。   http://support.microsoft.com/kb/839280/ja   http://support.microsoft.com/kb/886680/ja 以下のサイトは、どうすれば原因回避できるのかわかりませんでした(勉強不足を感じております)   http://msdn2.microsoft.com/ja-jp/library/ms164014.aspx master.sp_sdidebug を実行する権限の設定方法をご存知の方、ご教示いただけませんでしょうか? 3) Visual Studio以外で、SQLServer2005のストアドプロシージャをデバッグする方法がありましたらご教示ください。 変数の途中の値を一時テーブルにINSERTして確認するくらいしか方法はありませんでしょうか? 申し訳ございませんが、もしご存知の方、ご教示いただけませんでしょうか? なお、設定やマシン環境で記述不足等ありましたら、ご指摘いただければと思います。 以上です。よろしくお願いします

  • ストアドプロシージャについて

    教えてください。 NT4.0上でAccess2000+MSDEで使用しているのです。 ストアドプロシージャでUPDATE文のあとにSELECT文を使い更新したデータを受け取ろうとしているのですが、実行すると「ストアドプロシージャは実行されましたがレコードは返されませんでした。」とメッセージが表示されるだけなのです。UPDATE文を注釈にするとレコードは返されるのでデータはあるのだと思います。 宜しくお願いします。