過去の投稿「SQL Server-ストアドプロシジャーのソースを表示する1」で示した方法では
1つのストアドプロシジャーのソースしか表示できなかったので、Transact-SQLを使ってデータベース内の
すべてのものを取れないかと追加調査。
SELECT specific_name AS proc_name ,routine_definition AS souce_code FROM information_schema.routines ORDER BY specific_name
と実行すればすべてのストアドプロシジャーのソースが表示できる。
しかしinformation_schema.routinesのHELPには
関数またはストアド プロシージャが暗号化されていない場合、
関数またはストアド プロシージャの定義テキストの
最初の 4,000 文字を返します。
それ以外の場合は NULL が返されます。
完全な定義を取得するには、OBJECT_DEFINITION関数または
sys.sql_modulesカタログビュー内のdefinition列に対して
クエリを実行します。
という記述があるので、長いストアドプロシジャーのソースは最後が
切れる可能性がるようです。
で
SELECT OBJECT_NAME(object_id) AS proc_name ,definition AS souce_code FROM sys.sql_modules ORDER BY proc_name
とすればソースのすべてが取得できるのでこちらの方が良いかもしれませんね。
OBJECT_NAME()というTransact-SQLの関数も使ってます。