我正在处理遗留数据库。
例如,我有表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等微不足道的方法都不起作用。
答案 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了解详情。