为什么通过它使用的表重新创建存储过程被删除?

时间:2013-04-03 23:09:20

标签: sql sql-server sql-server-2012

从SQL Server 2012数据库中删除旧表和存储过程时遇到了一个奇怪的问题。整个想法是首先删除旧表(100+),然后重新创建所有存储过程。因此,如果任何存储过程包含已删除表的引用,则不会创建它。但令人惊讶的是,即使表不存在,也会创建所有存储过程!

我尝试重新启动SQL Server实例,刷新本地架构,尝试了WITH RECOMPILE选项以及一些DBCC命令,但没有任何作用。

有谁能告诉我如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

如果没有表存在,仍然可以创建存储过程,就在运行它们时,将抛出异常。因此,您不能依赖表来决定是否创建存储过程。

你可以做的是,删除所有那些100多个旧表后,你可以检查你的存储过程依赖,你可以使用SSMS GUI,只需右键单击存储过程,然后查看依赖关系,然后选择view [Objects on哪个[..]依赖],那么你可以知道哪个存储过程有未解析的实体,然后你可以删除存储过程。