4

是否有方法/機制可用於在Visual Studio 2012/2013中基於SSDT的數據庫項目中運行不同的部署後腳本集,基於構建配置?我希望通過使用「測試」配置進行部署來預先填充數據以進行測試/持續集成,但自然不希望爲其他環境執行此操作。雖然我似乎無法找到一種有條件地將後期部署腳本鏈接到構建配置的方法,而這對我來說似乎很奇怪。VS 2013數據庫項目:根據構建配置運行的部署後腳本

回答

3

您也可以使用SQLCMD變量來做類似的事情。如果值==「Test」,則運行一組值。如果沒有,運行其他的東西。我的博客上講述,在這裏:

http://schottsql.blogspot.com/2013/05/trick-to-not-run-prepost-sql-on-publish.html

它不是構建完成,該腳本始終包含這種方式,但如果這不是一個問題,它給你一個方法可以輕鬆地編寫代碼來在各種環境中運行容易。

+0

嗯...你如何將SQLCMD值設置爲構建配置?我嘗試使用'$(Configuration)',但它只是解析該值並存儲「調試」。 – 2014-08-29 12:38:07

+0

我們創建發佈配置文件來完成所有這些。然後我們使用該發佈配置文件構建。我知道有一個選項可以通過SQLCMD值,但不知道它是什麼在我頭上。我們更經常地先構建,然後發佈w/SQLPackage來設置值。 – 2014-08-29 14:04:06

+0

我明白了!謝謝。 – 2014-08-29 15:30:34

7

您可以通過編輯MSBuild使用的.sqlproj文件來完成此操作。然後,當您構建「測試」配置時,您可以在「發佈」模式下構建不同的dacpac內容。例如:

  • 創建項目並添加部署後腳本
  • 卸載該項目並編輯.sqlproj文件
  • 更改包含PostDeploy腳本來看看如下的ItemGroup:

<ItemGroup Condition=" '$(Configuration)' == 'Release' "> <PostDeploy Include="Debug.PostDeployment1.sql" /> </ItemGroup>

  • Build in Debug configuration and unpack the dacpac:no postdeploy.sql fil e將包含在內
  • 構建測試配置並解壓dacpac:postdeploy.sql文件將在那裏。
+0

blech,這是醜陋的...但它看起來像它會工作。 – 2014-08-27 17:56:16

相關問題