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