2014-01-22 66 views
4


我正在靠牆撞我的頭,因爲我在VS2012中遇到了一個奇怪的錯誤。 我有一個包含一些同義詞的數據庫項目。它們基本上是對另一個數據庫的表引用,以避免動態SQL生成。我已經爲同義詞添加了所需的參考數據庫。除了幾個使用某些同義詞的觀點,一切都很好!由於我在存儲過程中使用了相同的同義詞,並且它們不會導致任何構建失敗,所以我不確定視圖爲什麼導致問題。
錯誤消息說:「SQL05313:同義詞'xxx'指的是一個無效的對象。' 這裏是一個示例代碼 -
dbo.MyTable.sql ...
CREATE SYNONYM [dbo].[MyTable] FOR [$(FOO_DB)].[dbo].[MyTable];
dbo.MyProc
CREATE [dbo].[MyProc] AS SELECT col1, col2, col3 FROM [dbo].[MyTable];
SUCCESS: this works
dbo.MyView.sql ...
CREATE VIEW [dbo].[MyView] AS SELECT col1, col2, col3 FROM [dbo].[MyTable];
ERROR: SQL05313 Synonym '[dbo].[MyTable]' refers to an invalid object.


有沒有其他人遇到過這個問題?如果是的話,我感謝你的幫助:)在數據庫項目中使用同義詞創建視圖(Visual Studio 2012)

+0

何時發生此錯誤?你有沒有試過在SSMS中執行腳本? – SouravA

+0

我正在使用vs 2015相同的問題,我面臨着。請任何人得到這個分享的答案。 – Liquid

+0

你有沒有找到解決這個問題的方法? –

回答

0

由於某些原因,SP中的引用錯誤被視爲警告,而視圖中的引用錯誤則視爲錯誤。因此,錯誤僅僅意味着對$(FOO_DB)的引用不起作用 - 請仔細檢查變量引用是否設置正確。

如果您正在引用另一個數據庫項目,它必須單獨編譯爲.dacpac(例如,您不能創建循環引用)。如果您確實需要循環引用(在FOO_DB1中引用FOO_DB2,並在FOO_DB2中引用FOO_DB1中的視圖),請查看組合對象(類型相同的數據庫的數據庫引用)。

+0

你好, 我試過你的建議。但我仍然沒有看到我的同義詞。 場景:主項目,外部對象項目。在主項目中,我有一個從同義詞中選擇的視圖。當我構建項目時,我們說在數據庫中找不到同義詞。同義詞被改爲:CREATE SYNONYM [dbo]。[TestSynonym] FOR [$(ExternalServer)]。[$(ExternalDB)]。[dbo]。[Table1]我在ExternalObjects項目中創建了Table1。我還在Main Project中添加了一個數據庫引用給ExternalObject。我錯過了什麼? 謝謝, Alex –

0

我得到這個錯誤,我最終發現,我已經跑CREATE SYNONYM fred FOR ...代替CREATE SYNONYM **dbo**.fred FOR ... 因此,創建同義詞以我個人的模式,而不是dbo,這停止了CREATE VIEW。 我知道你的代碼包含[dbo].[MyTable],但是在你自己的模式中有沒有相同的同義詞,前面的CREATE SYNONYM命令不包括[dbo],這可能會混淆CREATE VIEW命令?

相關問題