2009-05-14 4 views
0

私はストアドプロシージャProcAを持っていると言います。それはProcBをいくつかの時間、ProcCを常に呼び出し、ProcDがエラーを起こした場合はProcDを呼び出します。 ProcBは毎回ProcEを呼び出します。エラーが発生した場合、ProcCはProcFを呼び出します。procが呼び出すすべてのprocsをテキストとともに自動化する方法は?

ProcAのテキストを、それが呼び出すすべてのprocsのテキストと一緒に取得して、ツリー全体に渡って回帰することを自動化することはできますか(AからFまで)?これは、複雑なSQLプロキシでエラーを見つけるのに役立ちます。ここ

私が最初に考えたのは、PROCAのテキストを取得それをregexで、その他のprocsへの呼び出しを見つけ、繰り返しをすすぎ洗い、最後に次のようになりますテキスト(ファイルまたはUIへ)を吐き出すです:

ProcA definition 
... 
ProcB definition 
... 
... 
ProcF definition 

しかし、私は提案にはオープンしていますが、おそらく簡単な方法があります。これを行うツールがすでに存在している場合は、それが分かります。私はこの上にGoogleに何を入れるべきか分かりません。

答えて

2

SQL Serverにはsys.sysdependssys.syscommentsがあります。

INFORMATION_SCHEMA.ROUTINESは一般的なSQLの場合には役立ちますが、SQL Serverに返されるテキストのサイズには制限がありますので、避けてください。

+0

「洗浄、すすぎは、繰り返し」できるオブジェクトが一覧表示されますメモリが私の右に役立つ場合、procの完全なテキストを取得するには – jcollum

+0

申し訳ありませんが、INFORMATION_SCHEMA.ROUTINESではなくsys.syscommentsですが、長いprocsのフルテキストを取得するにはいくつかトリッキーが必要です。多くの企業はすでに – jcollum

+0

ROUTINE_TYPE 、AS o.type_desc SELECTそれのためのPROCまたはスクリプトを周りに持っているの。[名前] [SCHEMA_NAME] AS、O。[名前] sys.sql_modules FROM ROUTINE_DEFINITION AS ROUTINE_NAME 、m.definition ASINNER JOIN sys.objects AS WITH(NOLOCK) ON m。[object_id] = o。[OBJECT_ID] INNER JOIN sys.schemas AS s WITH(NOLOCK) ON s。[schema_id] = o。[schema_id] –

0

データベースの内部テーブルを照会するのが最善の方法です(可能な場合)。

+0

良い点。コメントにもかかわらず属します。質問のタグを変更しました – jcollum

0

SQL 2000 Enterprise ManagerでMS SQLを使用している場合は、ストアドプロシージャ>すべてのタスク>依存関係の表示を右クリックします。 SQL 2005 Management Studioで、ストアドプロシージャ>ビューの依存関係を右クリックします。

それはあなたに、このprocのIDを従属他のオブジェクトの任意のコードが表示されませんが、それはあなたが、あなたはsys.commentsに行くことができる

関連する問題