2013-08-06 42 views
1

我的解決方案中有一個Visual Studio數據庫項目,用於管理對數據庫和源代碼管理的更改。在數據庫項目中預加載數據

我有以下腳本/部署後的文件夾中的項目爲每個表的腳本,我在Script.PostDeployment.sql運行如下:

:r .\Data.Script1.sql 
:r .\Data.Script2.sql 
.... 

這些所需的腳本填入數據,如使用查找表「插入到tablename ...「語句中。

我所面臨的問題是:

  1. 如果在上面的例子中SCRIPT1失敗,因爲該數據庫已經存在,我因爲在校正數據等拼寫錯誤的結構微小變化的重新部署,其餘的批次也被中止。
  2. 變化INSERT INTO語句,因爲depolying在數據現有數據庫的第一條語句時,不傳播。*。由於該行已經存在SQL文件將失敗。

有沒有辦法在Visual Studio數據庫項目中比較現有數據庫中的數據,並根據行是否已存在或使用插入或更新?

感謝您的輸入

+0

我很想知道,如果MSDN文章的解決方案是爲你工作,它提供您所需的所有控制? –

+0

我還沒有時間進一步探索它。它現在基本上在後臺。但是,只要我找到可行解決方案或嘗試合併,我就會更新它。合併看起來很有前途,但語法不太友好 – ASR

回答

0

您已經提出的這些問題是由遷移工具,如liquibaseflyway解決。它們記錄已經應用到數據庫的遷移,因此只會針對特定版本運行新更改。

類似的工具存在於其他語言。我可以親自推薦liquibase,這是我在命令行模式下使用的(對於非Java項目)並集成到應用程序代碼中。