2013-08-07 75 views
63

我已經創建了訪問[INFORMATION_SCHEMA].[TABLES]視圖中的UDF [TABLES]:未解決的參考對象[INFORMATION_SCHEMA]

CREATE FUNCTION [dbo].[CountTables] 
(
    @name sysname 
) 
RETURNS INT 
AS 
BEGIN 
    RETURN 
    (
     SELECT COUNT(*) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @name 
    ); 
END 

在Visual Studio中,對於該視圖的模式和名稱都標有警告:

SQL71502:函數:[dbo]。[CountTables]有一個未解析的對象[INFORMATION_SCHEMA]。[TABLES]的引用。

我仍然可以發佈數據庫項目沒有任何問題,而UDF似乎運行正常。 IntelliSense爲我填充視圖的名稱,所以它似乎沒有問題。

我也試圖改變執行使用sys.objects代替這個觀點,但我得到了這個觀點相同的警告也是如此。

如何解決此警告?

回答

113

添加數據庫引用master

  1. 在這個項目中,右鍵單擊引用
  2. 選擇添加數據庫引用...
  3. 選擇系統數據庫
  4. 確保主人被選中。
  5. Press OK

注意,這可能需要一段時間VS更新。

+5

只是一個警告 - 如果任何人有SSDT安裝在不同的路徑,你_might_可能會有問題。我們在最後一個項目中遇到了這樣的情況,其中一些有E:驅動器,而其他則只有C:驅動器。我們將該參考文件複製出來並放入共享位置,以便我們可以通過它參考。\ SharedSchemas \ master.dacpac。現在可能已經解決了,但是在第一個版本中是個問題。 –

+0

Peter Schott在這裏有一個觀點。在解決方案內部的某處複製引用的dacpac文件並從中使用通常是一個好主意。 –

+1

對我來說,它說「在您的項目中已經存在對此係統數據庫的引用。」我現在卡住了! – orad

1

Sam說這是做這件事的最好方法。
但是,如果您有一個場景需要從在該特定位置沒有該引用的機器部署dacpac,則可能會遇到麻煩。 另一種方法是打開您的.project文件,並確保以下標記的值爲false,用於您嘗試運行的構建配置。

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors> 

這種方式你不需要添加一個對你的項目的引用。

+8

這應該是最後的手段,因爲你失去了對sql錯誤的反饋! – Jowen

0

在我們的項目中,我們已經有一個參考大師,但我們有這個問題。這是我們得到的錯誤:

SQL71502: Procedure: [Schema].[StoredProc1] has an unresolved reference to object [Schema].[Table1].[Property1]. 

要解決引用錯誤,在桌子上的SQL文件, 右擊屬性和驗證BuildSettings設置爲構建。

改變它構建固定它。