2017-03-15 63 views
0

長時間讀者,首次提問者!DACPAC中的非SQL Post部署腳本

我一直在關注我一直在討論的問題,我們正在爲我們的數據庫代碼部署DACPAC,在新的「DevOps」世界中需要幾乎一次點擊就完成了。這應該可以在MSI創建的時候完成,但是我推動添加了這個功能,所以我將它保存在DACPAC中,因爲我可以控制這一方面。

有誰知道一種方法來執行不是SQL的post/pre部署腳本。理想的PowerShell,但最初我只需要創建文件夾結構並移動一些文件。

出於安全原因,xp_cmdshell不存在問題。

我想過創建一個SQL Agent作業來自動運行PowerShell,然後刪除它自己,但我寧願不通過遊說的路線,它似乎太雜亂。

任何意見將不勝感激。

編輯:SQLCMD模式支持

:!! [命令]

例如

:!! MKDIR C:\測試

不幸的Visual Studio不支持SQLCMD的那個水平,從而回到繪圖板。

回答

0

我想你可能會稍微看錯了一下,而不是讓dacpac做別的事情,我們通常做的是有一個部署dacpac然後做x的powershell腳本。

通常有必要在部署過程中,包括在這裏我們要運行一些SQL比較之前的預部署前的腳本發生如此的過程是有一個PowerShell腳本:

  • 檢查前預先部署腳本並運行它
  • 通過調用sqlpackage或使用DacServices .NET庫

在你的情況,你會部署dacpac然後去做別的事情在你的腳本部署dacpac。

無論哪種方式,你總是希望你要到版本控制系統,您使用的參數(如密碼或環境的具體的東西,然後他們將參數等),這是有道理的

希望一個腳本來執行部署,你提到的一件事是,它應該是一個點擊完成 - 如果這意味着DBA或有人點擊dacpac部署那麼這是不是DEVOPS :)

埃德

+0

嘿編感謝您的答覆,並是的完全同意,我一直是PowerShell的人,所以理想的方式是部署PS與特別的額外腳本。不幸的是,我在一個非常龐大的組織中工作,一些多付的顧問已經引發了一些devops buzz的話,並且他們已經走了一條不允許的路線(他們將它們包裝在MSI中)。我在幾周前遞交了我的通知,因爲那些令我沮喪的事情,我只是試圖想出一個解決方案,現在比任何事情都更能證明一個問題:)我現在將它發佈。 – Ollie

+0

Nevermind我的修復程序在Visual Studio中不起作用,我找到了SQLCMD模式的文檔,並且可以使用以下命令運行命令:!! mkdir C:\ Test但是Visual Studio不支持所有SQLCMD功能,未來雖然! – Ollie

+0

如果他們是msi的,你可以在完成後添加一個動作來運行嗎?微星有一個MoveFileAction。如果你可以編寫代碼,你可以編寫一個構建執行器,一個.net dll文件,這個文件需要放在相對於執行部署腳本時調用的sqlpackage的特定位置 - 然後你可以做你喜歡的,執行部署之前,期間或之後。說實話,如果你在幾個星期內離開,我會記錄下每個人的不同方法和好處,留給下一個人去爭論/哭泣:)這聽起來像是他們會改變它 –