有没有办法在SQL Server中找到该列的依赖项?

时间:2015-02-03 09:41:13

标签: sql-server

我正在处理遗留数据库。 例如,我有表CarTable,其定义如下。

CREATE TABLE [dbo].[CarTable] (
    [CarID] BIGINT IDENTITY (1, 1) NOT NULL,
    [Name] VARCHAR (MAX) NOT NULL,
    [Status] INT NULL,
    [CarStatus] INT NULL,
);

我想自动检查是否有任何存储过程或视图引用了列Status。可能吗? 数据库中有许多名为Status的列,而生成数据库模式转储和greping等微不足道的方法都不起作用。

2 个答案:

答案 0 :(得分:1)

您可以从Microsoft SQL Server Management Studio执行此操作。右键单击Table(在对象资源管理器中)并选择"查看依赖关系"。

答案 1 :(得分:1)

也许您可以使用sys.dm_sql_referencing_entities和sys.dm_sql_referenced_entities来执行您想要的操作。

例如,此查询为您提供(直接)引用Status表的CarTable列的所有对象:

 select referencing_schema_name, referencing_entity_name
 from 
     sys.dm_sql_referencing_entities('dbo.CarTable', 'OBJECT')
 cross apply
     sys.dm_sql_referenced_entities(referencing_schema_name + '.' + referencing_entity_name, 'OBJECT')
 where referenced_minor_name = 'Status'

查看documentation of these dmv's了解详情。