トップ回答者
SQL SERVER 2008 Agentのカテゴリによって、画面分けたいです

質問
-
こんにちは。
SQL SERVER 2008 ENTERPRISE EDITION X86を使っています。
AGENTサービスを利用して、自動タスクを構成しています。(一部手動)
AGENTの各ジョブに属するカテゴリが違います。
【ジョブの利用状況モニタ】機能で、一覧のジョブを出せますが、ジョブのカテゴリによって、表示したいです。
もちろん、フィルタ機能もありますが、いったん設定したら、画面を閉じたら、元の状態に戻ってしまいます。
実現イメージ:
二つ以上の【ジョブの利用状況モニタ】を起動して、ひとつはカテゴリA、もう一つはカテゴリBになればOKです。
目的:ユーザの間違い操作を防止するためです。
いろいろ試してみましたが、MMCとかのコンソールも実現可能でしょうか。
一番ベスト実現イメージ:
【SQL Server Management Studio】を使わず、直接Agentの【ジョブの利用モニタ】を起動し、それぞれ、カテゴリによって、表示すればよいですね。
何かアドバイスがあれば、ぜひ教えてください。
よろしくお願いいたします。
回答
-
最初にお断りしておきますが、未確認な情報で申し訳ありません。
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に非対応になってしまった(?)ようです。
自分でも色々調べてみますが、現在のところは何とも言えません。
-
そういえばシステムストアドプロシジャや動的管理ビュー(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 Snippetselect 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_idDMVを使えば、通常のクエリーで結果返ってくるので、後はGridviewを貼り付けたプログラムを作っても良いですし、
Reporting Servicesを使ってレポートを作成しても良いかと思います。
# 最近PowerShellの勉強をしていて、そっちの方ばっかり考えていて、
# 動的管理ビューを使えば簡単に出来ることをすっかり忘れていました。
#
# なんで動的管理ビューの事を忘れていたんだろ?
すべての返信
-
最初にお断りしておきますが、未確認な情報で申し訳ありません。
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に非対応になってしまった(?)ようです。
自分でも色々調べてみますが、現在のところは何とも言えません。
-
CatTail さんからの引用 他に、実現可能な方法として(プログラムを作成する必要がありますが)SQL-DMOを使って
機能を呼び出すという方法もあります。
(昔作ったプログラムで、bcpをSQL-DMOを使ってコマンドラインではなくプログラムから実行した事があります)
SQL-DMOの説明は一言では出来ませんまで、SQLDMOで検索すれば、SQM-DMOをサンプル等を含めて
色々なサイトが引っかかるはずです。
以上、参考まで。
有難う御座います。
実は私もその方法も考えてみました。ただ、なるべく、開発コストをかからず、SQL自分自身の機能として、実現させたいですね。
一応、【資格情報】に登録して、エージェントの【プロキシ】を利用して、ログインユーザーごとに表示させることを確認しておりました。
その以外の方法もしあったら、ぜひ書き込んでください。
-
そういえばシステムストアドプロシジャや動的管理ビュー(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 Snippetselect 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_idDMVを使えば、通常のクエリーで結果返ってくるので、後はGridviewを貼り付けたプログラムを作っても良いですし、
Reporting Servicesを使ってレポートを作成しても良いかと思います。
# 最近PowerShellの勉強をしていて、そっちの方ばっかり考えていて、
# 動的管理ビューを使えば簡単に出来ることをすっかり忘れていました。
#
# なんで動的管理ビューの事を忘れていたんだろ?