2011-01-27 23 views

答えて

10

INFORMATION_SCHEMA.ROUTINESまたはsyscommentsは、ではなく、です。

テキストフィールドは、両方の場合(複数行のsyscommentsのみ)nvarchar(4000)です。だからあなたの検索テキストはsyscommentsのため境界に失われていないか、決してINFORMATION_SCHEMA.ROUTINES

sys.sql_modules.definitionのために見つけることができるまで、この答えをもたらすのnvarchar(max)の

SELECT 
    OBJECT_NAME(object_id) 
FROM 
    sys.sql_modules 
WHERE 
    definition LIKE '%mytext%' 

編集、2011年10月

です日付。

Red Gate SQL Searchであり、無料の SSMSプラグインが非常に便利です。

+1

+1 thx、私は何か新しいことをもう一度学んだ。 –

+0

+1は 'sys.syscomments'の使用を妨げています。 [This](https://visakhm.blogspot.in/2012/03/advantages-of-using-syssqlmodules-view.html)のブログでは、なぜ 'sys.sql_modules'を使用すべきかという理由についていくつかの理由が詳しく説明されています。 – RBT

2

更新:いくつかの同等の方法があります。ここでは一つだ:

SELECT 
    OBJECT_NAME(object_id) 
FROM 
    sys.sql_modules 
WHERE 
    Definition LIKE '%searchtext%' 
    AND OBJECTPROPERTY(object_id, 'IsProcedure') = 1 
+0

-1、それが動作しない場合がありますので、これはROUTINE_DEFINITIONはdownvote.Updated – gbn

+0

THXを持っていないかもしれません... sys.sql_modulesまたはOBJECT_DEFINITIONと同等ではありません:*それが間違っている*ました私は投稿しました:あなたはそれを修正するために編集しました。あなたは私の正しい*答えを投票しました。 –

+0

@Mitch小麦、しばらくprocをコード – gbn

1

あなたにも使用することができます。

select distinct object_name(id) from sys.syscomments where text like '%SearchTextHere%' 
+0

いくつかの理由[ここ](https://visakhm.blogspot.in/2012/03/advantages)のために、 'sys.syscomments'と比較して' sys.sql_modules'を使う方が良いです-of-syssqlmodules-view.htmlを使用して)。 'sys.syscomments'は、定義テキストの長さが4000文字を超える場合、ストアドプロシージャの定義を複数の行に分割します。 – RBT

0

あなたはストアドプロシージャ自身によるテキストを検索したいされていますか?

またはテーブルデータ?

テーブルデータの場合、約LIKE

関連する問題