2010-10-04 32 views
4

我在Visual Studio 2010中使用數據庫項目來管理我的所有數據庫代碼。使用VS 2010數據庫管理示例數據

對於我的應用程序,我們將每個客戶端的數據分成它們自己的數據庫副本,並使用通用數據庫將用戶映射到適當的數據庫。

我想在TFS中保留幾個不同的樣本數據集以及代碼,並且能夠根據需要有選擇地部署其中的一個。

我爲兩個不同的客戶端數據庫創建了腳本,並將它們都保存在tfs中的部署後目錄中。我想保持另一個我們用於演示和單元測試。

有沒有一種方法可以使得:r在SQLCMD中有條件?有沒有其他建議或最佳做法如何做到這一點?我一直在閱讀Visual Studio 2010 Database Projects Guidance Document,但還沒有發現任何東西。

在此先感謝您提供的任何幫助。

回答

3

在向項目中添加變量並在腳本中檢查它之前,我處於正確的軌道上。

有兩個小卡子:

  1. 在.sqlcmdvars文件中的變量值的值需要包括在其周圍
  2. 這種方法產生一個腳本與所有的樣本數據的單引號包括在內,但只有變量指定的那個被執行。隨着示例數據變得更加完整,這將成爲一個相當大的文件,但這對我的目的應該沒問題。我可以看到這對於真正的大型數據集是如何成爲一個破壞行爲的。而且,由於它包含在BEGIN END塊中,因此各個腳本不能包含GO分隔符。

這是我的文件:

/* All deployments get the reference data */ 
:r .\ReferenceData.PostDeployment.sql 

IF ('$(SampleSet)' = 'ClientA') 
BEGIN 
    :r .\SampleData.ClientA.PostDeployment.sql 
END 
ELSE IF ('$(SampleSet)' = 'ClientB') 
BEGIN 
    :r .\SampleData.ClientB.PostDeployment.sql 
END 

感謝傑米·湯姆森和this article爲引用值位。

+0

當個別腳本包含GO語句時,任何人都知道如何做到這一點? – JontyMC 2011-05-13 10:34:02