特定の値を見つけたい場合は、次のスクリプトを使用してすべてのストアドプロシージャのテキストを検索します。
SELECT ROUTINE_NAME, ROUTINE_TYPE
FROM INFORMATION_SCHEMA.ROUTINES
WHERE ROUTINE_DEFINITION LIKE @searchText
ORDER BY ROUTINE_NAME
私は最近ROUTINE_DEFINITION
は4000文字で停止するため、一部のプロシージャは本来あるべきときに返されませんでした。
ストアドプロシージャの全文に値を問い合わせるにはどうすればよいですか?
BOLの_INFORMATION_SCHEMA.ROUTINES
_から:
列名:_ROUTINE_DEFINITION
_
データタイプ:nvarchar(4000)
説明:関数またはストアドプロシージャが暗号化されていない場合、関数またはストアドプロシージャの定義テキストの最初の4000文字を返します。それ以外の場合は、NULLを返します。完全な定義を確実に取得するには、 OBJECT_DEFINITION 関数または sys.sql_modules カタログビューの定義列をクエリします。
したがって、スクリプトを次のように変更することで、残りを表示できます。
_SELECT
ROUTINE_NAME,
ROUTINE_TYPE,
ROUTINE_DEFINITION as First4000,
OBJECT_DEFINITION(object_id(ROUTINE_NAME)) as FullDefinition
FROM
INFORMATION_SCHEMA.ROUTINES
WHERE
OBJECT_DEFINITION(object_id(ROUTINE_NAME)) LIKE @searchText
ORDER BY
ROUTINE_NAME
_
上記のFullDefinition
としてエイリアスされた列は、残りのコンテンツをnvarchar(max)
として返します。