2012-11-14 33 views
32

我在VS 2012中創建SQL Server數據庫項目&導入我們的數據庫。 當我構建項目時,我得到了很多「未解決的對象引用」錯誤。 這些錯誤僅適用於我的數據庫中的一些視圖。 這些視圖的語法是正確的&我沒有使用臨時表。 我應該檢查什麼來解決這個問題?VS 2012數據庫項目「未解決的對象引用」錯誤

UPDATE: 這是一個例子:

CREATE view [Factory].[NonStartedOrders] 
as 
SELECT 

"Customers"."CustomerName", "Customers"."CustomerAName", 
"Customers"."MarketID", 
"Orders"."OrderID", 
"Orders"."ApproveDate", 
"FactoryOrders"."FactoryID", 
"FactoryOrders"."EstEndDate", 
"FactoryOrders"."StatusID", 
"FactoryOrders"."TotalWeight", 
"Karats"."KaratEName" 

FROM (("Taiba"."Sales"."FactoryOrders" "FactoryOrders" 
INNER JOIN "Taiba"."Sales"."Orders" "Orders" ON "FactoryOrders"."OrderID"="Orders"."OrderID") 
INNER JOIN "Taiba"."General"."Customers" "Customers" ON "Orders"."CustomerID"="Customers"."CustomerID") 
INNER JOIN "Taiba"."MasterPiece"."Karats" "Karats" ON "Orders"."MKaratID"="Karats"."KaratID" 

「TAIBA」 這裏是我的數據庫名。 我收到30錯誤只爲這個看法。 這些是他們幾個錯誤:

Error 217 SQL71561: View: [Factory].[NonStartedOrders] has an unresolved reference to object [Taiba].[Sales].[FactoryOrders] 

Error 219 SQL71561: View: [Factory].[NonStartedOrders] contains an unresolved reference to an object. Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects: [Taiba].[Sales].[FactoryOrders].[FactoryOrders]::[OrderID], [Taiba].[Sales].[FactoryOrders].[OrderID] or [Taiba].[Sales].[Orders].[FactoryOrders]::[OrderID]. 
+1

步驟一:顯示一個視圖的一個例子,具體的錯誤。另外請記住,僅僅因爲數據庫「有效」,並不意味着你沒有真正的錯誤和警告,你以前不知道。 –

+0

我用一個例子更新了這個問題。 –

回答

20

我解決了這個問題。

看來我的幾個觀點/服務提供商已使用引用此命名約定(3份合格的名稱)表:

DatabaseName.SchemaName.TableName

我改變了所有的引用是爲以下:

SchemaName.TableName

+3

只是爲了防止任何人看到這個錯誤,並且上面沒有爲你做...如果你有一個VS DB項目和你在對象中引用的列,你也會看到這個錯誤存在的錯誤與您在TFS中檢查的表定義(而不是實際的列)是不匹配的。 HTH。 –

+1

感謝您爲我挽回頭痛的傢伙 – pqsk

+0

這是我想出來的解決方法,但如果您已經觸摸了數百個數據庫對象的代碼,我不會完全稱它爲解決方案。 – cdonner

12

在我的情況下,不能被發現是生成操作的功能= ,所以它沒有被包含在CoMP ILE。

將生成操作更改爲生成糾正了此問題。

+1

這對我有用,謝謝你節省了我的一天 – mmssaann

+0

這意味着你實際上並沒有編譯這個文件。 –

+0

爲我工作,謝謝 – szaman

34

另一種可能性是,您在視圖/表等中使用的模式在項目中不存在。您可能需要將模式添加到VS數據庫項目。

右鍵單擊項目和Add > New Item > Schema

+1

這正是我所期待的。 – K0D4

+0

感謝您爲此 - 我手動爲Azure SQL數據倉庫建立數據庫項目,僅用於源代碼管理,這正是我需要的 –

+0

請確保您添加了一個類型schema的文件。如果在創建模式時添加了'script'類型的文件(擴展名爲.sql的普通文件),未解決的引用問題將會持續存在 – DiederikTiemstra

0

嘗試明確定義的類:

類:指定類可保安全的在其上的權限正在被授予 。範圍限定符::是必需的。

閱讀的SQL語句GRANT的文檔:http://technet.microsoft.com/en-us/library/ms187965.aspx

在我來說,我有一個用戶定義的表類型。

GRANT EXECUTE ON TYPE::[dbo].[MessageTableType] TO [PostOffice_Role]; 
6

在Visual Studio 2015年建立一個CTE時,這發生在我身上,我改變了生成操作編譯和錯誤走了。

  1. 與錯誤
  2. 按F4選擇文件(S)以查看屬性。
  3. 在Build Action下拉列表中選擇'Compile'。

希望這可以幫助別人。

+0

我試過了。事實上,錯誤消失了,但Schema比較沒有被破壞。它不再承認項目內的結構.... – AXMIM

0

當你添加一個表(使用.sql文件)也將收到此錯誤,如果你不檢查,在.sqlproj文件

相關問題