簡而言之,我管理一組版本化的SQL腳本,其中一個要求是它們需要向後兼容,因爲可以多次執行相同的腳本,仍然可以保證最終版本具有相同的最終結果。基本上說,我們在版本3上。我們需要能夠反覆運行版本1,2和3的腳本,沒有錯誤,並且仍然保證最終結果是相同的完整版本3.SQL - 如何:然後在沒有動態SQL的同一腳本中執行GO(執行新查詢)?
現在在正常情況下這很容易(只需檢查column/table/type是否正確,如果不是則創建/修改),但是如何處理例如長度超過8000個字符且不能作爲動態SQL執行的觸發器?在安裝版本2時,觸發器被刪除,最後創建新的觸發器以匹配v2的數據模型。但是,如果v3刪除了v2觸發器引用的列之一,則該觸發器現在將失敗。
我無法進行任何形式的IF檢查來查看我們的日誌是否有v3腳本,或者數據模型是否與要求不匹配。我討厭讓別人做體力勞動來做一些我肯定可以自動化的方式。那麼有沒有什麼好的噱頭,訣竅或只是我錯過了,可以幫助?
感謝您的幫助。 :)
太棒了。謝謝一堆!我之前嘗試過使用sp_executesql,但由於當時忙,我錯過了你似乎無法用GO執行多個查詢,但我可以將它們分成幾批sp_executesql,所以這是完美的! :) – Kahn
@Kahn很高興幫助:) –