2017-05-30 52 views
0

我可以運行SqlPackage導入bacpac,它可以在運行前檢查數據庫是否存在,還可以指定將.mdf, .ldf文件放在哪裏?所以當數據庫存在時,它不會做任何事情;但如果它不存在,它會爲我導入數據庫?用SqlPackage導入bacpac數據庫,檢查是否存在並指定位置

+1

我想你將不得不結合T-SQL和sqlpackage.exe來實現這一點。用於sqlpackage.exe的xp_cmdshell。 –

+0

@DeanSavović我試過你的解決方案,它的工作,謝謝:) –

回答

1

SqlPackage.exe不接受參數來指定導入操作的mdf和ldf文件的位置。

有幾個選項來解決此問題:

  • 創建所需的MDF和LDF文件自己(使用,例如SQLCMD)一個空數據庫,然後運行SqlPackage.exe導入將bacpac文件放入空數據庫中。
  • 使用「部署貢獻者」在運行時修改部署行爲。這有點複雜,因爲它涉及將一些C#代碼編譯爲.NET DLL,然後在執行導入操作時使用該.NET DLL。但最好的部分是,你可以重寫SqlPackage.exe執行的T-SQL,不過你會喜歡。下面是修改數據的樣本部署貢獻者和日誌文件的路徑:https://github.com/Microsoft/DACExtensions/blob/master/Samples/Contributors/DbLocationModifier.cs

對於不同的行爲存在,相較於不存在 - 請注意,導入命令將拒絕修改非空的數據庫,因此不管數據庫是否已經存在,執行導入操作都是安全的。

+0

我試過你的建議,我的高級安裝項目,它的工作,謝謝 –

相關問題