2

我正在编写一个 DDL 脚本来删除一些表,但需要首先确定这些表的所有依赖项。这些依赖项包括外键约束、存储过程、视图等。最好,我想在删除依赖表之前以编程方式使用系统表/视图删除这些依赖项。

4

5 回答 5

3

从头开始编写非常混乱。您是否考虑过像 Red-Gate SQL Dependency Tracker这样的第 3 方工具?

于 2008-09-09T23:06:06.830 回答
1

sp_depends 不可靠 请参阅:Do you depend on sp_depends (no 双关语)

于 2008-09-09T23:02:01.880 回答
0

您可以随时搜索 syscomments 表……不过这可能需要一段时间……

于 2008-09-09T23:09:04.810 回答
0

你能参考一下sysreferences吗?

select 'if exists (select name from sysobjects where name = '''+c.name+''') '
+' alter table ' + t.name +' drop constraint '+ c.name 
 from sysreferences sbr, sysobjects c, sysobjects t, sysobjects r
 where c.id = constrid 
  and t.id = tableid 
  and reftabid = r.id
  and r.name = 'my_table'

这将产生大量的条件drop constraint调用。应该管用。

于 2009-06-18T03:23:01.300 回答
-2

您可以使用 sp_depends 存储过程来执行此操作:

USE AdventureWorks GO EXEC sp_depends @objname = N'Sales.Customer' ;

http://msdn.microsoft.com/en-us/library/ms189487(SQL.90).aspx

于 2008-09-09T22:58:14.183 回答