Sql-Server-2008

架構更改後如何檢測損壞的儲存過程?

  • January 4, 2021

我在我的數據庫中修改了一個中央表,並且 sp_depends 從字面上返回了數百個結果,我擔心其中一些儲存過程在我更改後可能不再編譯。

檢查一個儲存過程很容易(我只是重新執行 alter 腳本,看看操作是否成功),但是在 100 多個過程上這樣做有點麻煩。

我知道我可以使用這樣的腳本重新編譯我的數據庫的所有對象,但是實際操作將在下次執行儲存過程時發生,而不是立即發生,所以這在我的情況下似乎不合適。

我還想我可以完全刪除所有儲存過程,並使用我的原始碼控制系統重新同步我的數據庫,但是這個選項雖然可行,但不是很優雅。有沒有更好的方法來做到這一點?

我正在使用 SQLServer 2008 R2,我的數據庫腳本儲存在 VS 2008 數據庫項目中。


澄清一下,我不主張只依賴這種方法來測試程式碼。就像在 c# 中一樣,您在編寫程式碼時會立即檢測其他依賴文件中的語法錯誤(然後使用其他策略進行測試,例如單元測試,這通常會慢幾個數量級),我認為檢測 SQL 依賴項是有意義的在幾秒鐘內出錯,而不必執行通常需要幾個小時才能完成的完整功能測試。

您如何執行您的單元、功能、集成和性能測試?如果您沒有任何測試,那麼是時候開始將您的數據庫模式視為程式碼並將其視為程式碼,包括版本控制和測試。Alex Kuznetsov 有一整本書專門討論這個主題:使用 SQL Server 進行防禦性數據庫程式

這是一種解決方法,但您可以為數據庫生成 CREATE PROCEDURE 腳本(右鍵點擊數據庫 -> 任務 -> 生成腳本),找到並用 ALTER PROCEDURE 替換 CREATE PROCEDURE,然後解析。

我希望您在這裡得到更好的答案-我也很感興趣!:)

引用自:https://dba.stackexchange.com/questions/16243