我正在使用一个产品,在升级期间删除并重新创建所有现有过程(基本上只是从INFORMATION_SCHEMA中找到所有正确的过程然后丢弃)然后重新创建所有新过程。我认为其目的是确保所有程序都是最新的。
我目前遇到的问题是,在一个非常慢的客户数据库上,重新创建所有过程的脚本无法说明该过程已经存在。看起来由于某种原因,数据库服务器还没有赶上。
我尝试在drop和created之间添加DBCC FREEPROCCACHE
,但仍无济于事。关于如何让这个工作的想法?
答案 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)?