我正在重构一个遗留系统。它的数据库有大量的表,其中一些没有使用。我需要指定这些表才能知道是否应该删除它们。SQL 中是否有任何方法可以确定特定表是否被任何可编程对象(即存储过程、视图或函数)使用?
问问题
58 次
2 回答
0
右键单击表 -> 查看依赖项
于 2012-12-16T06:40:30.373 回答
0
为了指定每个对象的依赖关系,我使用了一个返回对象类型的 select 语句:表、函数、触发器、过程和数据库中的视图。
选择这些对象后,我使用光标来指定对这些对象中的每一个的依赖关系。以下是我使用的代码:
DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR
SELECT name
FROM sys.objects
WHERE (type = 'U') OR (type = 'FN') OR
(type = 'TR') OR (type = 'P') OR
(type = 'V')
DECLARE @dbObjectName varchar(500)
OPEN c
FETCH NEXT FROM c INTO @dbObjectName
WHILE (@@FETCH_STATUS = 0)
BEGIN
print @dbObjectName
EXEC sp_depends @objname = @dbObjectName
FETCH NEXT FROM c INTO @dbObjectName
END
CLOSE c
DEALLOCATE c
于 2012-12-16T14:29:16.440 回答