2013-07-23 133 views
6

我是SQL Server數據庫工具的新手,可能會對後期部署腳本正在做什麼做出錯誤的假設。所以糾正我,如果我錯了。ssdt post部署腳本運行一次

據我所知後部署腳本將有望每個部署後運行,而不僅僅是一個單一的部署。

如果我想有運行的腳本只有一次後部署腳本是有辦法做到這一點,而不需要同時在時,這些腳本已經跑了日誌的數據庫版本或歷史表?

I.e.我是否可以對腳本進行後續修改作爲項目中添加版本號的新文件添加,並將其添加到後期部署腳本中,但是會忽略以前的腳本(可能沒有先刪除它)?無論它是否仍在部署期間運行腳本?

是否有這種事情的配置,或者是這種無意的行爲?

回答

8

預部署和部署後腳本旨在在您每次發佈項目時運行。你的最佳實踐是使它們可重複。添加檢查,以便如果數據已經存在,則不會再次運行或類似。你可以建立一些基本的日誌表來存儲它 - 如果在表中找不到行,運行腳本並將行放在表中。

你不能告訴的項目,如果不存在多個腳本,因爲他們都建成一個大PreDeploy.sql或PostDeploy.sql文件只運行最新版本的腳本。你需要在每個部分/腳本中有一些東西來告訴它在哪裏查看是否運行。這可能是一個現有的數據檢查,表格檢查,版本檢查或其他內容,但它需要知道某處用來知道是否運行。

沒有辦法比註釋掉腳本或通過SQLCMD變量或其他檢查,處理它們以某種方式來關閉這個功能等。那些仍然會要求你編寫每個腳本應該運行的方式。如果您在Pre/Post Deploy腳本中提供了一個或兩個您想要完成的內容,我們可能會提供一些更好的指導。

對於我們來說,我們做腳本可重複使用,並刪除他們,因爲他們一直在運行。它們仍然處於源代碼管理中,或者您可以在刪除它們之前使用快照來存儲該版本的項目。

+0

你的回答是好的,這就是我所期待的,我只是想知道如果SSDT可能有「運行一次」一些配置,但它無法知道這個問題的答案自身。 – Pricey

+1

我不知道有這樣的配置。項目如何知道在任何給定的數據庫上「沒有運行一次」,而沒有一些表或其他方式來引用正在執行的工作? –