如何在同一数据库服务器中找到数据库对象的依赖关系,但不能找到相同的数据库?
E.g。如果我在dbo.table1
中有一个表Database1
,并且在dbo.SPROC_1
中的存储过程Database2
中引用它。
我用过
SELECT
referencing_schema_name, referencing_entity_name,
referencing_id, referencing_class_desc, is_caller_dependent
FROM
sys.dm_sql_referencing_entities ('dbo.table1', 'OBJECT');
这只返回Database1
中的依赖项。
答案 0 :(得分:2)
你可以使用下面的查询,它可以给你所有数据库中的依赖列表。但是它可能会提供额外的行,因此您需要相应地修改搜索条件 -
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 ''%'+@tabName+'%''
union all select distinct db_name(), name from ?.sys.synonyms(nolock) where replace(replace(base_object_name,''['','''') ,'']'','''') like ''%'+@tabName+'%'''
EXEC sp_MSforeachdb @command