none
ジョブ実行時の権限エラーについて RRS feed

  • 質問

  • お世話になります。

    WindowsServer2008R2・Sqlserver2008R2でDBの開発をしています。

    手動で正常に実行していたストアドプロシージャをジョブで実行
    することになりSQLServerエージェントでジョブを作成し、
    定時実行を行いたいのですが、ジョブからの実行を行うと、
    ストアドプロシージャ内のリンクサーバーの作成・DROPCLEANBUFFERS
    コマンド(クリーンバッファの削除)の実行の箇所で、エラー停止してしまいます。


    ジョブ履歴には以下のエラーが表示されています。

    ■リンクサーバーの作成時
    ユーザーにはこの操作を実行する権限がありません。 [SQLSTATE 42000] (エラー 15247).  ステップは失敗しました。

    ■DBCC DROPCLEANBUFFERS の実行時
    ユーザー '***' には DBCC DROPCLEANBUFFERS を実行する権限がありません。 [SQLSTATE 42000] (エラー 2571).  ステップは失敗しました。


    調査したところ、ジョブ実行はSQLAgentの実行ユーザーが行って
    いるとの事だったので、Management Studioの[セキュリティ]-[ログイン]
    から実行ユーザーの権限を変更(サーバーロールにsysadmin追加・
    ユーザマッピングに該当のDBを設定・セキュリティ保護可能なリソースに
    リンクサーバの変更を追加)を行ったのですが、状況は変わりません。

    また、SQLAgentの実行ユーザーのOS内での所属グループはAdministrators・
    SQLServerSQLAgentUser$***$xxx です。(***はサーバ名、xxxはDB名です)

    ジョブ内でこれらの処理を正常に実行する方法をご教授いただけないでしょうか。
    よろしくお願いたします。

    2012年6月14日 12:50

回答

  • SQL Server Agent の実行ユーザーが違うって事は無いですか?

    ※SQLAgent$[インスタンス名]のサービスのログオン情報に設定されているユーザー?

    見当違いだったらすいません。

    2012年6月19日 8:06
  • Profiler で Audit Login, SQL:BatchStarting, RPC:Starting, Exception あたりのイベントをトレースすると、どのユーザーとして実行されているのかを確認できますので、まずは、実行アカウントを確実にするのがよいのではないかと思います。誰として実行されているのかが分かれば、あとは、その人に必要なアクセス権を与えるだけになると思います。

    2012年6月28日 4:19

すべての返信

  • SQL Server Agent の実行ユーザーが違うって事は無いですか?

    ※SQLAgent$[インスタンス名]のサービスのログオン情報に設定されているユーザー?

    見当違いだったらすいません。

    2012年6月19日 8:06
  • Profiler で Audit Login, SQL:BatchStarting, RPC:Starting, Exception あたりのイベントをトレースすると、どのユーザーとして実行されているのかを確認できますので、まずは、実行アカウントを確実にするのがよいのではないかと思います。誰として実行されているのかが分かれば、あとは、その人に必要なアクセス権を与えるだけになると思います。

    2012年6月28日 4:19