2017-09-07 16 views
1

同じデータベースサーバー内のデータベースオブジェクトと同じデータベースではないデータベースオブジェクトの依存関係を確認するにはどうすればよいですか?テーブルの依存関係SQL Server

など。テーブルdbo.table1Database1にあり、ストアドプロシージャで参照されている場合はdbo.SPROC_1Database2にします。

私はこれが唯一のDatabase1で依存関係を返し

SELECT 
    referencing_schema_name, referencing_entity_name, 
    referencing_id, referencing_class_desc, is_caller_dependent 
FROM 
    sys.dm_sql_referencing_entities ('dbo.table1', 'OBJECT'); 

を使用。

+1

簡単にはできません。依存関係は、指定されたデータベース内にのみ存在します。しかし、RedgateのSQL Searchのようなものを使って、他のデータベースへの参照を検索することができます。どのようにスライスしても、(同じサーバー上であっても)外部データベースの依存関係を手作業でマッピングする必要があります。 –

答えて

2

あなたはあなたのすべてのDBの依存関係のリストを与えることができます以下のクエリを使用することができます。ただし、追加の行があるため、検索条件を変更する必要があります。

DECLARE @command varchar(1000) , @tabName varchar(100) 
select @tabName = 'Sales.Customer' 
SELECT @command = 'USE ? select distinct db_name(), object_name(id) from ?.dbo.syscomments(nolock) where text like ''%'[email protected]+'%'' 
union all select distinct db_name(), name from ?.sys.synonyms(nolock) where replace(replace(base_object_name,''['','''') ,'']'','''') like ''%'[email protected]+'%''' 
EXEC sp_MSforeachdb @command 
+1

これはほとんどの場合動作しますが、他のデータベースがテーブル名の代わりにエイリアスを使用している場合でも、依存関係が失われます。 –

+0

私は別名ではなく、同義語と言っていました。 :) –

+0

シノニムを処理するために上記のクエリを変更しました。 –

関連する問題