0

私は、データベースをServerAからServerBに移動するタスクを担当しました。ServerBには、他の多くのデータベースオブジェクトが含まれていますが、ServerAへのリンクサーバー接続を使用しているものはごくわずかです。たとえば、ServerBのtable1をServerA.database.schema.table1に結合するビューがある場合があります。

ServerAを参照するすべてのオブジェクトのリストを表示するServerBで実行できるスクリプトを知っている人はいますか。これにより、各オブジェクトを開かなくても、オブジェクトをすばやく更新できます。

これが理にかなっていることを願っています。ありがとう

4

1 に答える 1

4

これには誤検知の可能性がありますが、依存関係ビュー(動的SQLまたは単に古い依存関係を見逃す)に依存するよりもおそらく優れています。

SELECT 'EXEC sp_helptext ''' 
 + QUOTENAME(OBJECT_SCHEMA_NAME([object_id]))
 + '.' + QUOTENAME(OBJECT_NAME([object_id])) + ''';'
FROM sys.sql_modules
WHERE definition LIKE '%ServerA.%';

サーバー名が角かっこで囲まれている可能性がある場合も考慮する必要があります。

OR definition LIKE '%\[ServerA\].%' ESCAPE '\';

また、将来このタイプのメンテナンスを防ぐために、SYNONYMの使用を検討する必要があります。実際、サーバー名を参照する同義語を確認することもできます。

SELECT name, base_object_name
  FROM sys.synonyms
  WHERE base_object_name LIKE 'ServerA.%'
  OR base_object_name LIKE '\[ServerA\].%' ESCAPE '\';
于 2012-06-26T16:00:35.850 に答える