Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何指定数据库中是否确实使用了特定的表?_Sql Server 2008 - Fatal编程技术网

Sql server 2008 如何指定数据库中是否确实使用了特定的表?

Sql server 2008 如何指定数据库中是否确实使用了特定的表?,sql-server-2008,Sql Server 2008,我正在重构一个遗留系统。它的数据库有大量的表,其中一些表没有被使用。我需要指定这些表,以便知道是否应该删除它们。 SQL中是否有任何方法可以确定特定表是否由任何可编程对象(即存储过程、视图或函数)使用 右键单击table->View Dependencies为了指定每个对象的依赖关系,我使用了一个select语句返回对象类型:表、函数、触发器、过程和数据库中的视图 在选择这些对象之后,我使用一个光标来指定对每个对象的依赖关系。以下是我使用的代码: DECLARE c CURSOR READ_ON

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

右键单击table->View Dependencies

为了指定每个对象的依赖关系,我使用了一个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

听起来不错。让我稍微扩展一下我的问题,并问:有没有一种方法可以指定特定数据库中不依赖于任何其他对象的所有表?那么,您可以共享它吗?我在下面的回答中写了一个建议的游标,它可以输出数据库中每个表的依赖项。我正在努力使它更通用。