1

Microsoft SQL Server 2008 のレガシー SQL アプリケーションに (小さな) 変更を加える予定です。いくつかのデータベース、多くのストアド プロシージャ、関数、およびいくつかの CLR アセンブリを使用しています。

大局的なドキュメントはなく、周囲の人々の頭の中のいくつかの一般的な知識だけです。

ストアド プロシージャが呼び出されるすべての場所を検索するときに、どのツールを使用しますか? 私は経験豊富な SQL 開発者ではありません。私の経験は、ソース コードがデータベースではなくテキスト ファイルに格納されているプログラミング言語に適しています。

レガシー SQL アプリケーションの内容を学習するために、どのツールをお勧めしますか?

ありがとう、ペトル

4

1 に答える 1

3

特定の質問について:

ストアドプロシージャが呼び出されるすべての場所?

ブルート フォースを使用することはできますが、これにより、プロシージャ名が単純であり、コード内 (別のオブジェクト名の一部としても) またはコメント内に自然に表示される場合に、いくつかの誤検出が発生します。

SELECT OBJECT_SCHEMA_NAME([object_id]), OBJECT_NAME([object_id])
  FROM sys.sql_modules
  WHERE definition LIKE '%your_procedure_name%';

これはまた、動的 SQL で構築されたプロシージャーへの呼び出しをキャプチャーしませんが、いずれにせよ、この問題に対する完全な包括的な解決策があるとは思いません。ストアド プロシージャがジョブによって呼び出されているケースを検出することもできます。

SELECT j.name FROM msdb.dbo.sysjobs AS j
  INNER JOIN msdb.dbo.sysjobsteps AS s
  ON j.job_id = s.job_id
  WHERE s.command LIKE '%your_procedure_name%';

(誤検知や動的 SQL についても同じ注意事項があり、関連性がある場合でもキャッチされないネストされたプロシージャー呼び出しもあります。)

その他のアイデア:

于 2012-08-07T12:39:30.560 に答える