2015-11-09 62 views
0

我們有幾個數據庫,比如DB1,DB2,DB3等。如何從VS DB項目中引用另一個DB?

它們必須有相同的代碼庫,所以我們在Visual Studio 2012中使用了一個數據庫項目,並根據項目之間的比較生成了一個用於部署的SQL腳本和UAT/Prod DB1。然後將此腳本應用於DB1-DBn。

對於這個DB項目歷史上的第一次,我不得不創建一個包含一個硬編碼的數據庫名稱,例如功能:

inner join DB1.schema.table1 as t1 on 

而現在該項目不能建或比較無法更新或腳本生成(更新和生成腳本按鈕被禁用),因爲與該數據庫引用有關的許多錯誤,因爲VS似乎認爲DB1不存在。

我嘗試添加一個項目級SQLCMD變量$(DB)並將其設置爲DB1默認值,並把它作爲

inner join [$(DB1)].schema.table1 as t1 on 

解決的錯誤,但它似乎沒有任何區別。

編輯:

有人建議,以圓形項目引用添加到自身,並分配給它,我試圖手動添加,不知道如何實現這一目標相同的變量。

回答

0

按本article參考應該被添加到一個手動提取.dacpac文件如下:從targed DB

提取.dacpac文件用下面的命令:

"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\sqlpackage.exe" /SourcePassword:p /SourceUser:u /Action:Extract /ssn:192.168.2.1 /sdn:DB1 /tf:DB1.dacpac 

包括,作爲一個數據庫引用。它會自動分配正確的SQLCMD變量名稱,並且錯誤消失。

從源代碼管理點,即使添加對.dacpac文件的數據庫引用自動創建SQLCMD變量,它也不會將該文件添加到項目中。使用的.dacpac文件仍然必須作爲現有項目添加到項目中,這是一種跛腳。在解決方案資源管理器中這樣做,我遇到了一個錯誤,必須通過團隊資源管理器來完成,而不是在那裏工作。