如何指定数据库中是否真正使用了特定的表?

时间:2012-12-16 06:26:17

标签: sql-server-2008

我正在努力重构遗留系统。它的数据库有大量的表,其中一些表没有使用。我需要指定这些表,以便知道它们是否应该被删除。 在SQL中是否有任何方法可以确定任何可编程对象(即存储过程,视图或函数)是否使用了特定的表?

2 个答案:

答案 0 :(得分:0)

右键单击表格 - >查看依赖关系

答案 1 :(得分: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