2015-10-05 44 views
1

好吧,有一堆關於此的帖子,但所有不同版本的問題。我無法找到與我的具體(雖然,基本)版本的問題的帖子。首先,這些都是我跟着創建在Visual Studio 2012(殼)數據庫項目(SSDT)中的步驟與SQL Server數據工具:SQL71501 SSDT未解決的引用 - 比較模式

  • 創建新項目,SQL->數據庫項目
  • 右擊在項目中,選擇「比較模式」
  • 集源(服務器上的SQL Server實例)
  • 設置目標(本地數據庫項目 - 當前項目)
  • 運行「模式比較」
  • 更新目標

這給我一個SQL Server數據庫中所有對象的填充數據庫項目。但是,在構建項目時,我得到200多個未解決的引用錯誤:

X-包含未解析的對象引用。任一對象不存在或基準是不明確的,因爲它可能是指任何以下對象:X,Y,Z

AND

X-具有未解決的引用對象

向Master添加數據庫引用可將錯誤降低到127,現在它更易於管理,但這並未解決。它僅影響100箇中的5個或10個對象。這裏有一些事情要記住:

  1. 只有一個數據庫的SQL Server對象使用(意見等)

  2. 只有2部分命名,即(dbo.Table爲T)

  3. 我的VS 2012版本中不存在「爲公用對象啓用擴展Transact-SQL驗證」選項,此功能已由Microsoft刪除,並已關閉。

  4. 我運行命令行sqlpackage.exe並創建了數據庫的dacpac,然後將其添加爲數據庫引用。

數據庫項目仍不會生成。錯誤只涉及某些觀點和程序。有沒有人有這個問題?

+1

引用指向的對象/表是否存在? –

+0

此外,您應該能夠雙擊這些警告/錯誤,並讓SSDT帶您到受影響的行(或至少非常接近它們)。這可以幫助您排除故障。我會尋找語法問題,缺少對象或類似的東西。我們可能會遇到問題,有時候會有相同數據庫的3個部分名稱,或者暗指「dbo」(例如DB..Table而不是dbo.Table)。 –

+0

是的,表格存在。這是一個生活/工作數據庫。當雙擊時,它確實將我帶到了線上。它說它無法確定該字段來自哪個表,並且列出了該select語句中涉及的所有表。當對數據庫運行時,該語句當然可用。 – JBDev1

回答

1

好的,我發現問題....

有在表中的字段已他們的名字用空格填充,即:

[字段1]

的觀點,特效等引用當然這些字段僅使用沒有填充的名稱部,即: 字段1

該名稱[Field1]非常錯誤,實際名稱是[Field1]導致架構中斷。

棘手的部分是......他們仍然在SQL Server中工作。儘管SQL Server在包含錯誤的查詢中顯示這些字段名稱,但它仍能夠成功處理查詢!我覺得有一些設置已經關閉了服務器端...無論如何,SQL Server應該從來沒有讓這些語句成功運行,並且問題會被捕獲。