1

我们在 SQL Server 2012 中的一个数据库(数据库 A)即将停用。我正在分析使用数据库 A 作为数据源的数据库 B 中的所有视图和 StoredProcs。如何编写查询来检索此信息。谢谢

4

2 回答 2

2

我使用以下内容在 SQL Server 2008 中获取对象及其依赖项:

select *
from (select referenced_database_name, o.name as ViewName, ed.referenced_entity_name as TableName
      from sys.sql_expression_dependencies ed join
           sys.objects o
           on ed.referencing_id = o.object_id
      where referenced_database_name is not null
     ) vdep

您可以添加过滤器来过滤掉您感兴趣或不感兴趣的数据库:

where referenced_database_name = 'A'
于 2013-04-03T15:38:18.320 回答
0

一个非常简单的方法是只查询过程文本

select p.name 
from sys.procedures p 
    inner join sys.syscomments c ON (p.object_id = c.id)
where c.text like '%database.%' or c.text like '%[database].%'

也可以进行相同的查询sys.views。根据数据库名称和我给你的简单算法,你可能会也可能不会得到很好的结果。

我不确定 sp_depends 是否适用于数据库,但我猜你也可以查询数据库的依赖关系,我只是不知道如何。

于 2013-04-03T15:34:18.680 回答