none
SQL SERVER 2008 Agentのカテゴリによって、画面分けたいです RRS feed

  • 質問

  • こんにちは。

    SQL SERVER 2008 ENTERPRISE EDITION X86を使っています。

    AGENTサービスを利用して、自動タスクを構成しています。(一部手動)

     

    AGENTの各ジョブに属するカテゴリが違います。

     

    【ジョブの利用状況モニタ】機能で、一覧のジョブを出せますが、ジョブのカテゴリによって、表示したいです。

    もちろん、フィルタ機能もありますが、いったん設定したら、画面を閉じたら、元の状態に戻ってしまいます。

     

    実現イメージ:

    二つ以上の【ジョブの利用状況モニタ】を起動して、ひとつはカテゴリA、もう一つはカテゴリBになればOKです。

    目的:ユーザの間違い操作を防止するためです。

     

    いろいろ試してみましたが、MMCとかのコンソールも実現可能でしょうか。

     

    一番ベスト実現イメージ:

    【SQL Server Management Studio】を使わず、直接Agentの【ジョブの利用モニタ】を起動し、それぞれ、カテゴリによって、表示すればよいですね。

     

    何かアドバイスがあれば、ぜひ教えてください。

    よろしくお願いいたします。

    2008年9月12日 0:25

回答

  • 最初にお断りしておきますが、未確認な情報で申し訳ありません。

     

    SQL Server 2008ではPowerShellのサポートが追加されています。

    もしかしたらPowerShellで何とかできるかもしれません。

    ※SQL Server 2008のPowerShell対応については、自分自身でも検証中です。

     

    またMMCでの実現ですが、SQL Server 2005以降、スナップインの追加に表示されなくなってしまったので、

    SQL Server 2000のEnterprise ManagerからSQL Server 2005/2008でSQL Management Studioに変更されたために

    MMCに非対応になってしまった(?)ようです。

     

    自分でも色々調べてみますが、現在のところは何とも言えません。

    2008年9月12日 10:58
  •  他に、実現可能な方法として(プログラムを作成する必要がありますが)SQL-DMOを使って

    機能を呼び出すという方法もあります。

    (昔作ったプログラムで、bcpをSQL-DMOを使ってコマンドラインではなくプログラムから実行した事があります)

     

     SQL-DMOの説明は一言では出来ませんまで、SQLDMOで検索すれば、SQM-DMOをサンプル等を含めて

    色々なサイトが引っかかるはずです。

     

     以上、参考まで。

     

    2008年9月12日 13:46
  • そういえばシステムストアドプロシジャや動的管理ビュー(DMV)の存在をすっかり忘れていました。

    システムストアドプロシジャでは、以下のプロシジャが役に立つと思います。
    ----------------------
    msdb.dbo.sp_help_job
    msdb.dbo.sp_help_jobactivity
    msdb.dbo.sp_help_jobhistory
    msdb.dbo.sp_help_category


    DMVでは、以下のDMV参考になると思います。
    ----------------------
    msdb.dbo.sysjobs_view
    msdb.dbo.sysjobactivity
    msdb.dbo.syscategories
    msdb.dbo.sysjobhistory

    ※masterデータベースではなく、msdbデータベースに格納されている事に注意してください。


    これらのDMVを使ってサンプルクエリーを作成してみました。
    -----------

    Code Snippet
    select sysjobs.name, sysjobs.description, sysjobs.category_id, categories.name, activity.*
     from msdb.dbo.sysjobs_view sysjobs,
          msdb.dbo.sysjobactivity activity,
          msdb.dbo.syscategories categories
     where sysjobs.job_id = activity.job_id
       and sysjobs.category_id = categories.category_id

     

     

    DMVを使えば、通常のクエリーで結果返ってくるので、後はGridviewを貼り付けたプログラムを作っても良いですし、
    Reporting Servicesを使ってレポートを作成しても良いかと思います。


    # 最近PowerShellの勉強をしていて、そっちの方ばっかり考えていて、
    # 動的管理ビューを使えば簡単に出来ることをすっかり忘れていました。
    #
    # なんで動的管理ビューの事を忘れていたんだろ?

    2008年9月22日 7:43

すべての返信

  • 最初にお断りしておきますが、未確認な情報で申し訳ありません。

     

    SQL Server 2008ではPowerShellのサポートが追加されています。

    もしかしたらPowerShellで何とかできるかもしれません。

    ※SQL Server 2008のPowerShell対応については、自分自身でも検証中です。

     

    またMMCでの実現ですが、SQL Server 2005以降、スナップインの追加に表示されなくなってしまったので、

    SQL Server 2000のEnterprise ManagerからSQL Server 2005/2008でSQL Management Studioに変更されたために

    MMCに非対応になってしまった(?)ようです。

     

    自分でも色々調べてみますが、現在のところは何とも言えません。

    2008年9月12日 10:58
  •  他に、実現可能な方法として(プログラムを作成する必要がありますが)SQL-DMOを使って

    機能を呼び出すという方法もあります。

    (昔作ったプログラムで、bcpをSQL-DMOを使ってコマンドラインではなくプログラムから実行した事があります)

     

     SQL-DMOの説明は一言では出来ませんまで、SQLDMOで検索すれば、SQM-DMOをサンプル等を含めて

    色々なサイトが引っかかるはずです。

     

     以上、参考まで。

     

    2008年9月12日 13:46
  • 2008の中、確かにPowerShellが入っていますね。.net3.5対応ですしね。

    PowerShellを利用して何かできるでしょう。

    2008年9月14日 12:37
  •  CatTail さんからの引用

     他に、実現可能な方法として(プログラムを作成する必要がありますが)SQL-DMOを使って

    機能を呼び出すという方法もあります。

    (昔作ったプログラムで、bcpをSQL-DMOを使ってコマンドラインではなくプログラムから実行した事があります)

     

     SQL-DMOの説明は一言では出来ませんまで、SQLDMOで検索すれば、SQM-DMOをサンプル等を含めて

    色々なサイトが引っかかるはずです。

     

     以上、参考まで。

     

    有難う御座います。

    実は私もその方法も考えてみました。ただ、なるべく、開発コストをかからず、SQL自分自身の機能として、実現させたいですね。

     

    一応、【資格情報】に登録して、エージェントの【プロキシ】を利用して、ログインユーザーごとに表示させることを確認しておりました。

     

    その以外の方法もしあったら、ぜひ書き込んでください。

    2008年9月14日 12:40
  • そういえばシステムストアドプロシジャや動的管理ビュー(DMV)の存在をすっかり忘れていました。

    システムストアドプロシジャでは、以下のプロシジャが役に立つと思います。
    ----------------------
    msdb.dbo.sp_help_job
    msdb.dbo.sp_help_jobactivity
    msdb.dbo.sp_help_jobhistory
    msdb.dbo.sp_help_category


    DMVでは、以下のDMV参考になると思います。
    ----------------------
    msdb.dbo.sysjobs_view
    msdb.dbo.sysjobactivity
    msdb.dbo.syscategories
    msdb.dbo.sysjobhistory

    ※masterデータベースではなく、msdbデータベースに格納されている事に注意してください。


    これらのDMVを使ってサンプルクエリーを作成してみました。
    -----------

    Code Snippet
    select sysjobs.name, sysjobs.description, sysjobs.category_id, categories.name, activity.*
     from msdb.dbo.sysjobs_view sysjobs,
          msdb.dbo.sysjobactivity activity,
          msdb.dbo.syscategories categories
     where sysjobs.job_id = activity.job_id
       and sysjobs.category_id = categories.category_id

     

     

    DMVを使えば、通常のクエリーで結果返ってくるので、後はGridviewを貼り付けたプログラムを作っても良いですし、
    Reporting Servicesを使ってレポートを作成しても良いかと思います。


    # 最近PowerShellの勉強をしていて、そっちの方ばっかり考えていて、
    # 動的管理ビューを使えば簡単に出来ることをすっかり忘れていました。
    #
    # なんで動的管理ビューの事を忘れていたんだろ?

    2008年9月22日 7:43
  • こんにちは。中川俊輔 です。

     

    CatTailさん、回答ありがとうございます。

     

    yangjiayiさん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    有用な情報と思われたため、CatTailさんの回答へ回答済みチェックをつけさせていただきました。

    追加の質問等ありましたら、是非投稿してみてください。

     

    今後もフォーラムをよろしくお願いします。

    それでは!

    2008年10月6日 7:25