0

我應該將數據庫遷移到VS2012 sql服務器項目中。我已經從目標數據庫導入了所有模式。種子數據將被添加到項目中的後期部署腳本中。不過,我也預見到很多腳本在開發各種增強功能時被開發人員添加。這些可以是更改模式腳本以及數據添加編輯刪除腳本。並且他們都必須按照順序運行部署後,理想情況下由腳本名稱執行1.0.0.0,然後執行1.0.0.2,然後執行1.0.1.0。 SQL Server項目不允許多個部署後文件。我可以在網上找到的是如何創建項目,而沒有人會談論如何創建一個結構,以考慮開發人員在不同發佈週期內所做的更改(更改腳本)。有人可以幫我嗎?VS2012中的自定義腳本文件Sql服務器項目

+1

爲了使用多個後期部署腳本,您需要將一個主要後期部署腳本標記爲構建類型的「後期部署」,然後在該腳本中使用「:r。\ script.sql 「sqlcmd語法來包含實際的腳本。但是,正如Keith所說,您應該讓項目在99%的案例中處理模式更改。這就是它設計的目的。很少,您可能必須在後期部署腳本中進行模式更改,但在必要之前,我會盡量避免它。 –

+0

是的,對部署後架構更新腳本的需求應該非常少見。你真的有這個需要嗎?如果是這樣,你能提供一個例子嗎? –

+0

除了模式更新之外,多個數據插入更新腳本是我的擔心。隨着產品功能的增加,表格的種子數據會增加。例如,如果我正在創建一個貸款管理系統,我會將一個貸款的狀態(InProcess,Rejected,Granted)放在一個表中。同樣,對於正在進行的每個增強/故事可能都需要一些種子數據出現在系統中。我無法理解這將如何照顧。當然,將所有這些數據放入一個部署後腳本中並不是一個好主意。 – BatNetMan

回答

1

Schema Comparison消除了編寫自己的更改腳本的需要。模式比較通過將數據庫項目的模式與數據庫服務器進行比較來自動爲您創建alter腳本。

這是一個很好的walk-through of Schema Comparison

+0

感謝Keith,我認爲這將解決我的模式腳本問題。不過,我正在處理數據腳本的問題。任何系統都需要一些種子數據,並隨着功能數量的增加而增長。我將如何處理這些腳本。這些數據腳本也必須進行版本化,因爲它需要靈活地從基於特定版本的源代碼控制中提取代碼庫。 – BatNetMan

+0

不幸的是VS並沒有提供直接的解決方案。我認爲最常見的方法是創建一個插入種子數據的部署後腳本。或者,您可以將種子數據作爲實體框架/其他ORM層的一部分插入。 – Keith

0

好的,這是我迄今爲止所做的。

  • 其次Keith的投入和創建了一個項目
  • 使用架構比較處理架構基於變化
  • 創建了生成操作的單一主腳本= PostDeploy
  • 對於數據的腳本,創建命名爲文件夾版本根據不同版本分離腳本
  • 在以下語法中添加了這些腳本在Master post deploy腳本中的條目:r Folder \ MyScript.sql

這將暫時適用,但應該有一種更好的方法來確保文件夾中的自定義腳本在主部署後腳本中自動選取。有了這個解決方案,開發人員每次添加一個腳本,就必須將一個條目寫入主部署腳本(:MyCustomeDataScript.sql)

我認爲可能有更好的方法來做到這一點,但我我沒有意識到這一點。我正在努力尋找一種方法,可以自動在主部署腳本中手動輸入新腳本。

+0

您可能會考慮使用諸如Red-Gate的SQL Data Compare等產品。如果您可以在某處保留數據庫w/data的「主」副本,則可以使用它來生成「種子」腳本。我不知道你需要支持多少個版本,但是如果你不支持許多版本,你可能會簡化這些腳本。但是,您需要有紀律才能檢入並使用這些數據插入腳本。 (不一定是壞的,因爲它可以確保你在發佈時不會錯過,但可能會很乏味) –

相關問題