删除和重新创建过程(SQL Server)

时间:2011-03-23 21:34:21

标签: sql-server stored-procedures

我正在使用一个产品,在升级期间删除并重新创建所有现有过程(基本上只是从INFORMATION_SCHEMA中找到所有正确的过程然后丢弃)然后重新创建所有新过程。我认为其目的是确保所有程序都是最新的。

我目前遇到的问题是,在一个非常慢的客户数据库上,重新创建所有过程的脚本无法说明该过程已经存在。看起来由于某种原因,数据库服务器还没有赶上。

我尝试在drop和created之间添加DBCC FREEPROCCACHE,但仍无济于事。关于如何让这个工作的想法?

2 个答案:

答案 0 :(得分:3)

检查proc是否属于与预期不同的模式。

像myaccount.Proc这样的东西,如果预计是dbo.MyProc

答案 1 :(得分:1)

除了我的回答之外,一个可能更强大的方法是为每个sproc提供脚本,例如:

IF SPROC EXISTS
THEN
DROP IT
GO

CREATE SPROC
GO

这样可以将每个drop / creation保持为一个项目,并且您可以更加确定该sproc实际上已被删除...

(顺便说一句 - 您的大删除脚本是否有可能在dbo架构中查找所有内容,并且此数据库意外地在另一个架构中创建了一个sproc)?