2010-12-20 12 views
3

プロシージャを変更したところ、より多くのパラメータが必要になりました。プロシージャが呼び出されるすべての場所を見つけるにはどうしたらいいですか?procが渡される引数の数を更新できますか? SQL Server 2005/2008でプロシージャ(または関数)のインスタンスをすべて検索する方法

私はこの試みた:

select * from syscomments where text like '%MODIFIED-PROCEDURE-NAME%' 

を私はまだprocは、このクエリは戻らなかったことを呼ばれている他の場所を見つけることです。

+0

syscommentsを使用する際の問題は、テキスト列がnvarchar(4000)であり、テキストが複数の行に分割されるときに切り捨ての問題が発生することです。 @ KMの答えが良い方法です。 –

+0

[ビューへの参照をすべて検索](http://stackoverflow.com/questions/1506082/find-all-references-to-view) –

答えて

8

使用sys.sql_modules:

SELECT 
    OBJECT_SCHEMA_NAME(m.object_id) + '.' + OBJECT_NAME(m.object_id) 
    FROM sys.sql_modules m 
    WHERE m.definition like '%whatever%' 

sys.sql_modules.definitionはNVARCHAR(MAX)です。他の同様のビューには、テキストが複数の行に分割されているnvarchar(4000)列があります。

+1

+1 - あなたは 'sp_depends'も使用できますが、データベース間の依存関係を示します。 – JNK

+0

これはうまくいった!ありがとう! – Ramy

5

Red-Gate SQL Search - それは素晴らしいです、それは無料ですそれだけで動作します。それはあなたが探しているものを正確に行うために使用することができます!それをつかむ - それは金の重さの価値がある!

alt text

+0

+100。ニース。それが無料であるかどうかはわかりませんでした。私はレッドゲートが大好きです。 – NotMe

0

これは、すべてのSQLサーバの内部にある場合、あなたはそれを再コンパイルすることができます。

すべてのストアドプロシージャと関数を含む単一のスクリプトを作成するだけです。スクリプトを実行します。それは問題があるところで爆撃するだろう。

オプションで、作成したスクリプトだけを検索することもできます。

関連する問題