3

SQL Serverデータベースで、他のデータベースへの参照を含むすべてのストアドプロシージャとビューを見つける必要があります。(同義語に置き換える必要があります。)

ストアドプロシージャがたくさんあるので、手動で検索したくありません。

それらを簡単に見つける方法はありますか?

4

2 に答える 2

4

SQL Serverのバージョンによっては、次のクエリにも値が含まれる場合があります。

SELECT OBJECT_SCHEMA_NAME(referencing_id), OBJECT_NAME(referencing_id) 
  FROM sys.sql_expression_dependencies
  WHERE referenced_database_name = 'YourDatabaseName';

実際には、ビューと手順の検索(@M_Mが指摘したように)の組み合わせが必要になります。これは、潜在的にいくつかを取り除く必要があります。たとえば、データベース名が他の理由でモジュールに自然に表示される可能性のある文字列である場合、sys.sql_modulesは誤検知を表示します。ただし、この回答では、たとえば動的SQLに埋め込まれている場合、データベース名は見つかりません。

于 2012-06-06T14:48:32.483 に答える
3

いくつかの方法がありますが、開始するのに適した場所はsql_modulesテーブルを検索することです。

SELECT OBJECT_NAME([object_id]), [definition]
FROM sys.sql_modules 
WHERE definition like '%MyOtherDBName%'
于 2012-06-06T14:42:20.047 に答える