在SSDT中使用msbuild,我已經嘗試了IncludeTransactionalScripts,但它似乎只將每個語句放在單個事務中。 是否可以將多個數據庫項目發佈爲事務? 如果沒有,我至少可以確保每個項目都在一個交易中發佈嗎?SSDT交易發佈?
1
A
回答
4
對於別人誰發現了這個問題,但不知道去哪裏找:
存在發佈設置「包括交易腳本」,即在發佈腳本的開始開始交易。然後在錯誤檢查中將每個模式更改包裝在腳本中。出錯時,事務回滾並且錯誤日誌遞增,但事務從頭開始。如果沒有錯誤,事務將繼續提交
BEGIN TRANSACTION
...alter object here
IF @@ERROR <> 0 @@TRANCOUNT > 0
BEGIN
ROLLBACK;
END
IF @@TRANCOUNT = 0
BEGIN
INSERT INTO #tmpErrors (Error)
VALUES (1);
BEGIN TRANSACTION;
END
最後,如果錯誤已經被註冊,整個事務回滾:
IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT>0 BEGIN
PRINT N'The transacted portion of the database update succeeded.'
COMMIT TRANSACTION
END
ELSE PRINT N'The transacted portion of the database update failed.'
GO
音符(上面的評論),這不包括你的部署前/部署後腳本,所以你應該小心分開包裝這些
下面的鏈接是彼得·肖特的博客 - 這是同一個人以上我評論誰認爲 - 謝謝:)
http://schottsql.blogspot.co.uk/2012/11/ssdt-publishing-your-project.html
他解釋說好聽了如何使用SSMS時配置這些設置
使用Visual Studio 2015,我發現默認情況下未設置「包含事務腳本」設置。你必須選擇這個定義發佈設置時([創建] >> [發表{項目名稱} ...])[高級...]選項卡下:
相關問題
- 1. 從MT4向IRC發佈交易
- 2. SSDT發佈時出錯但未生成
- 3. SSDT不會發布程序集
- 4. 發佈交易提交時的芹菜鎖
- 5. 觸發沒有交易?
- 6. 交易與非交易msmq
- 7. 同步Hibernate持久+春AMQP發佈交易
- 8. 如何發佈消息到現有的交易所
- 9. 在哪裏發佈比特幣現金交易?
- 10. 什麼是MAPP協議來獲取發佈的交易?
- 11. Python 3.6.1對於poloniex交易api的HMAC-SHA512的發佈請求
- 12. 開始交易...提交交易問題
- 13. 交易提交?
- 14. PayPal在俄羅斯盧布的交易
- 15. 分佈式存儲與交易
- 16. 數據到Munge:股票交易,交易所交易
- 17. 交易
- 18. 交易
- 19. 多大劑量QueueConnection.createQueueSession(布爾交易,INT acknowledgeMode)的交易參數的手段
- 20. 在C#中的交易中的交易#
- 21. 春季託管交易@交易註釋
- 22. Hyperledger交易類型:創建交易
- 23. shopify交易API獲取所有交易
- 24. Yodlee - 信用卡交易 - 交易地點
- 25. 將數據遷移與SSDT發佈整合?
- 26. 易趣交易API GetCategories
- 27. Django的 - PostgreSQL的:交易和併發
- 28. jdbc postgresql發生交易錯誤
- 29. 高交易系統中的觸發器
- 30. 發送和接收比特幣交易
我認爲這如果你選擇了這個選項,現在就這樣做。它在每個操作之後檢查是否有錯誤,以及是否發現在模式更改部分中完成的所有操作都發出ROLLBACK。 (部署前和部署後部分是獨立的,並在此之外) – 2014-10-22 14:38:18
你確定嗎?查看腳本,它會生成多個BEGIN和COMMIT事務,就像每次更改都在自己的事務中一樣。我想爲這個地段做一筆大交易。當然,如果有很多改變,它可能是不切實際的,但有時它可能是有用的。 – SAS 2014-10-24 09:49:27
如果出現錯誤,它肯定會回滾模式更改部分中的所有內容。當我依賴一個尚未創建的DB /表時,我痛苦地試圖推動DB項目的一部分,我知道這一點。在腳本中查找「IF @@ ERROR <> 0」部分,您不應該看到多個提交,只是回滾。 – 2014-10-24 12:58:28