2009-06-05 7 views
1

SQLエージェントでスケジュールされた夜間SQL Serverジョブがあります。SQL Serverジョブによって使用されるオブジェクト

これは、データベース、ストアドプロシージャとテーブルの数を使用しています。

これらのリストを取得するのが最善とは何ですか?

(そのSQL Server 2000の)

答えて

2

次のクエリを使用してジョブの各ステップのコマンドテキストを取得することができます。

SELECT sj.name   AS job_name 
     ,sjs.step_id 
     ,sjs.step_name 
     ,sjs.command 
FROM msdb.dbo.sysjobs   AS sj 
JOIN msdb.dbo.sysjobsteps  AS sjs 
ON sj.job_id = sjs.job_id 
WHERE sj.name = '~your job name~' 
AND sjs.subsystem = 'TSQL' 
ORDER BY sj.name 
     ,sjs.step_id 

あなたは、各ジョブステップのコマンドテキストを検索することができますデータベース、テーブル、およびストアドプロシージャの名前を検索します。これは、オブジェクトの命名規則が一貫していれば簡単です(テーブル名はt_、ストアドプロシージャ名はusp_で始まります)。あなたの検索のコメントを除外してください。

正規表現ライブラリは、簡単にこの作業を行いますが、それらのためのサポートは、ネイティブのT-SQLには含まれていません。 more than one wayを追加してregular expression supportをSQL 2000に追加するか、別の言語/ツールを使用して検索を実行することができます。

残念ながら、T-SQLコマンドの複雑さに応じて、書き込み(又は内購入)することなく、オブジェクト名を識別するのない100%保証する方法がないかもしれないT-SQLパーサ。

+1

あなたは上記のクエリからSQL文を取得する場合、私はあなたがそれらを直接解析する代わりに、推定クエリプランのうちの参照を解析しないことをお勧めします。これは、SQLを直接構文解析するよりはるかに簡単です。もしあなたがSQL 2005上にいたなら、私はあなたにいくつかのxqueryの例を与えることができました。 – ahains

関連する問題