オブジェクトへの未解決の参照[INFORMATION_SCHEMA]。[TABLES]


99

[INFORMATION_SCHEMA].[TABLES]ビューにアクセスするUDFを作成しました。

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このビューの代わりに使用する実装も変更しようとしましたが、このビューにも同じ警告が表示されました。

この警告を解決するにはどうすればよいですか?

回答:


180

へのデータベース参照を追加しますmaster

  1. プロジェクトの下で、[ 参照 ]を右クリックします。
  2. [ データベース参照の追加...]を選択します
  3. [ システムデータベース]を選択します
  4. マスターが選択されていることを確認します。
  5. OKを押します。

VSの更新には時間がかかる場合があります。


6
そしてただの警告-誰かがそれらのSSDTを別のパスにインストールしている場合、問題が発生する可能性があります。前回のプロジェクトでは、E:ドライブとC:ドライブだけがあったプロジェクトに遭遇しました。その参照ファイルをコピーして共有の場所に置き、。\ SharedSchemas \ master.dacpacから参照できるようにしました。それはおそらく今は解決されていますが、最初のリリースでは問題でした。
Peter Schott 2013

ピーター・ショットはここでポイントを持っています。参照されたdacpacファイルをソリューション内のどこかにコピーし、そこから使用することをお勧めします。
Veysel Ozdemir 2014年

1
私にとっては、「このシステムデータベースへの参照は既にプロジェクトに存在しています」と書かれています。行き詰まっています!
orad

1
次の人が正気を保存するためだけに-それを信じるか、VSを終了するだけでもこれを続けるには不十分でした-再起動する必要があり、設定が機能し始めました。Visual Studioのオプション... SQL Serverツール...オンライン編集...を開いて、「システムビューとマスターデータベースオブジェクトへの参照を解決する」を有効にすることもできます。
NYCdotNet 2017

Visual Studio 2017で同じ問題が発生し、参照リストに「データベース参照」が表示されない
Scarl

3

私たちのプロジェクトでは、すでにマスターへの参照がありますが、この問題がありました。ここに私たちが得たエラーがありました:

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

参照エラーを解決するには、テーブルSQLファイルでプロパティを右クリックし、BuildSettingsがBuildに設定されていることを確認します。

ビルドを変更すると修正されました。


2

サムが言ったことはこれを行うための最良の方法です。
ただし、その特定の場所にその参照がないマシンからdacpacを展開する必要があるシナリオがある場合、問題が発生する可能性があります。別の方法は、.projectファイルを開き、次のタグの値がfalse実行しようとしているビルド構成のれです。

<TreatTSqlWarningsAsErrors>false</TreatTSqlWarningsAsErrors>

これにより、プロジェクトへの参照を追加する必要がなくなります。


13
SQLエラーに関するフィードバックを失うため、これは最後の手段となるはずです。
Jowen、2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.