2009-08-04 138 views
6

視覺的SQL Server 2008預部署在數據庫項目

該項目有預部署和部署後的SQL腳本佔位符Studio 2008的數據庫項目。他們工作 - 好吧,無論如何,大部分時間。

該項目有一個選項可以始終重新創建-數據庫:刪除現有的數據庫,並創建一個新的熱來自該爐的數據庫每次。

當我部署我的數據庫整個SQL腳本放在一起,並執行。

我的數據庫用於複製,作爲部署後腳本的一部分,我將該服務器指定爲分配,創建複製並向其添加項目。

因此,我不得不關閉複製。而且這個合理的地方在Pre-Deploy。

VS2008抹躊躇滿志的笑容離我的臉很快。如果總是重新創建數據庫被選中,那麼它會放下腳本並重新創建數據庫,然後放入我的預部署腳本,然後放入其他所有部分。

是否有任何方法可以讓我更改數據庫項目的模板,以便在執行任何部署之前執行預部署SQL腳本。

+0

我被名稱預先部署上當也。 – 2012-08-10 16:46:26

回答

3

這可能並不完全符合您的要求,但它可以幫助您解決問題。在快速瀏覽後,我認爲部署前和部署後腳本的順序可能太難改變。

據我瞭解,有在構建項目,將讓您在開始部署之前執行自己的代碼,一些掛鉤。

  1. 在您的.dbproj文件中定義一個PreDeployEvent屬性。
  2. 在.dbproj文件中定義一個BeforeDeploy目標。

這些都應該在正確的時間點執行,我認爲。

如果使用PreDeployEvent屬性,你就需要指定一個命令行來執行。粗例子:

<PropertyGroup> 
    <PreDeployEvent>sqlcmd.exe -i myscript.sql</PreDeployEvent> 
</PropertyGroup> 

如果你想要更多的控制,使用BeforeDeploy目標,這將允許你運行一個或 多個自定義MSBuild任務。這裏還有一個最原始的例子:

<Target Name="BeforeDeploy"> 
    <Message Text="BeforeDeploy" Importance="high" /> 
</Target> 

順便說一句,有很多免費的自定義任務,其中一個例子就是那些www.msbuildextensionpack.com

+0

我嘗試將PropertyGroup放置在項目中的各種位置,但到目前爲止沒有任何工作。有沒有你知道我可以玩的樣品? – 2009-08-07 01:45:54

相關問題