2011-03-23 28 views
0

我正在使用一個產品,在升級過程中drop並重新創建所有現有過程(基本上只需從INFORMATION_SCHEMA中找到所有正確的過程然後再刪除),然後重新創建所有新的。我相信目的是確保所有程序都是最新的。刪除和重新創建過程(SQL Server)

我目前遇到的問題是,在一個非常慢的客戶數據庫上,重新創建所有過程的腳本失敗,說明過程已經存在。它看起來是因爲某種原因,數據庫服務器還沒有趕上。

我曾嘗試在滴和創建之間添加一個DBCC FREEPROCCACHE,但仍無濟於事。關於如何讓這項工作有用的想法?

+2

你是否100%確定所有sprocs都被刪除?這似乎比數據庫需要「趕上」更有可能。 – Paddy 2011-03-23 21:37:49

+0

產品是多線程的嗎?創建是否可能在刪除之前發送?我會運行一個跟蹤來收集更多信息。 – 2011-03-23 21:44:24

+1

您是否知道刪除重新創建過程將導致不同的權限?對程序所做的任何授予/拒絕都將被刪除,而不是*重新創建。 – 2011-03-23 21:50:16

回答

3

檢查proc是否屬於與expexted不同的模式。

喜歡的東西myaccount.MyProc如果預計dbo.MyProc

1

順便給我的答案,這樣做的可能更可靠的方法將是對所有做過類似的存儲過程腳本:

IF SPROC EXISTS 
THEN 
DROP IT 
GO 

CREATE SPROC 
GO 

這樣可以使每一滴/創作爲一個項目,你可以更確保存儲過程實際上是被刪除...

(順便說一句 - 有沒有可能是你的大缺失腳本在dbo模式中尋找一切,並且t他的數據庫意外地在另一個模式中創建了一個sproc)?

相關問題