2010-08-20 81 views
5

我在Visual Studio 2010中構建SQL Server 2008數據庫項目時出現了一個非常奇怪的問題。我創建了數據庫項目,然後從我正在使用的本地數據庫導入數據庫對象和設置。然後我去建立數據庫項目,並得到以下錯誤:VS 2010數據庫項目錯誤?

SQL03006:查看:[dbo]。[GovCAStaff]有一個未解析的對象[CTS_Staff]。[dbo]。[Client_Assignments]的引用。

問題似乎是GovCAStaff視圖正在引用不同數據庫中的表(CTS_Staff)。但是,我在同一個數據庫項目中有許多函數和存儲過程引用不同數據庫中的表,但構建過程僅爲這些數據庫生成警告,而不是生成錯誤。除了將視圖重寫爲函數之外,沒有人知道擺脫此構建錯誤的方法嗎?這是數據庫項目中視圖的已知限制嗎?無論如何,我真的很難過。已經搜索了這個話題,並沒有發現任何相關的。任何幫助將不勝感激。提前致謝。

回答

7

此錯誤在視圖中顯示,但不是函數和存儲過程的原因是因爲如果數據庫/表實際上不存在,SQL Server本身將如何反應。換句話說,在SQL Server中,您可以定義引用不存在或無法訪問的表的存儲過程和函數。對於觀點並非如此。

解決此問題的方法是將「數據庫引用」(一個.dbschema文件)添加到您的項目,以便項目生成過程知道該其他數據庫的模式。在哪裏可以獲得這個神奇的.dbschema文件?

  1. 爲其他數據庫創建另一個數據庫項目(大概是在相同的解決方案中)。這是最方便的,因爲您可以創建「項目引用」,並且所有內容都保持最新狀態(無論如何,您都希望爲其他數據庫創建數據庫項目)。
  2. 通過vsdbcmd手動創建.dbschema文件。
  3. 如果數據庫是「系統」數據庫(例如'master'或'msdb'),則可以使用預構建的.dbschema文件之一({Program Files} \ Microsoft Visual Studio 9.0 \ VSTSDB \ Extensions \ SqlServer的{版本} \ DBSchemas)。
+3

感謝您的反饋意見。這個解釋是有道理的。實際上,我最初嘗試使用.dbschema引用,但未正確配置數據庫引用設置,因此無法正常工作(我仍然不斷收到編譯器錯誤)。我最終通過定義一個設置爲另一個數據庫名稱的文字數據庫變量來實現它的工作,並設置了選項來抑制引用項目中未解決的引用導致的錯誤。非常感謝您的及時幫助! – 2010-08-23 13:52:27

+1

我投票評論你的評論。無論如何,如果你回答自己的問題,也許它會有更多的知名度 – p4bl0 2011-04-26 10:58:14

相關問題