長時間讀者,首次提問者!DACPAC中的非SQL Post部署腳本
我一直在關注我一直在討論的問題,我們正在爲我們的數據庫代碼部署DACPAC,在新的「DevOps」世界中需要幾乎一次點擊就完成了。這應該可以在MSI創建的時候完成,但是我推動添加了這個功能,所以我將它保存在DACPAC中,因爲我可以控制這一方面。
有誰知道一種方法來執行不是SQL的post/pre部署腳本。理想的PowerShell,但最初我只需要創建文件夾結構並移動一些文件。
出於安全原因,xp_cmdshell不存在問題。
我想過創建一個SQL Agent作業來自動運行PowerShell,然後刪除它自己,但我寧願不通過遊說的路線,它似乎太雜亂。
任何意見將不勝感激。
編輯:SQLCMD模式支持
:!! [命令]
例如
:!! MKDIR C:\測試
不幸的Visual Studio不支持SQLCMD的那個水平,從而回到繪圖板。
嘿編感謝您的答覆,並是的完全同意,我一直是PowerShell的人,所以理想的方式是部署PS與特別的額外腳本。不幸的是,我在一個非常龐大的組織中工作,一些多付的顧問已經引發了一些devops buzz的話,並且他們已經走了一條不允許的路線(他們將它們包裝在MSI中)。我在幾周前遞交了我的通知,因爲那些令我沮喪的事情,我只是試圖想出一個解決方案,現在比任何事情都更能證明一個問題:)我現在將它發佈。 – Ollie
Nevermind我的修復程序在Visual Studio中不起作用,我找到了SQLCMD模式的文檔,並且可以使用以下命令運行命令:!! mkdir C:\ Test但是Visual Studio不支持所有SQLCMD功能,未來雖然! – Ollie
如果他們是msi的,你可以在完成後添加一個動作來運行嗎?微星有一個MoveFileAction。如果你可以編寫代碼,你可以編寫一個構建執行器,一個.net dll文件,這個文件需要放在相對於執行部署腳本時調用的sqlpackage的特定位置 - 然後你可以做你喜歡的,執行部署之前,期間或之後。說實話,如果你在幾個星期內離開,我會記錄下每個人的不同方法和好處,留給下一個人去爭論/哭泣:)這聽起來像是他們會改變它 –