表依赖项SQL Server

时间:2017-09-07 16:19:45

标签: sql-server

如何在同一数据库服务器中找到数据库对象的依赖关系,但不能找到相同的数据库?

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中的依赖项。

1 个答案:

答案 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