web-dev-qa-db-ja.com

SQL71501-このエラーを取り除く方法は?

プロジェクトでは2つのスキーマを使用しています(dbo + kal)。

次のSQLステートメントを使用してビューを作成しようとすると、Visual Studioはエラーリストにエラーとして表示されます。

CREATE VIEW [dbo].[RechenketteFuerAbkommenOderLieferantenView]
AS
    SELECT
        r.Id as RechenkettenId,
        r.AbkommenId,
        r.LieferantId,
        rTerm.GueltigVon,
        rTerm.GueltigBis,
        rs.Bezeichnung,
        rs.As400Name
    FROM
        [kal].[Rechenkette] r
    JOIN
        [kal].[RechenketteTerm] rTerm ON rTerm.RechenketteId = r.Id
    JOIN
        [kal].[Basisrechenkette] br ON rTerm.BasisrechenketteId = br.Id
    JOIN
        [kal].[Rechenkettenschema] rs ON rs.Id = br.Id
    WHERE 
        r.RechenkettenTyp = 0

エラーメッセージは次のようになります。

SQL71501:計算列:[dbo]。[RechenketteFuerAbkommenOderLieferantenView]。[AbkommenId]には、オブジェクトへの未解決の参照が含まれています。オブジェクトが存在しないか、次のいずれかのオブジェクトを参照している可能性があるため、参照があいまいです。
[kal]。[Basisrechenkette]。[r] :: [AbkommenId]、[kal]。[Rechenkette]。[AbkommenId]、[kal]。[Rechenkette]。[r] :: [AbkommenId] 、[kal]。[Rechenkettenschema]。[r] :: [AbkommenId]または[kal]。[RechenketteTerm]。[r] :: [AbkommenId]。

ビューを公開して作業することは問題ありませんが、プロジェクトをビルドするときにエラーメッセージが常に表示されるのは非常に煩わしいので、深刻なエラーがすべて発生し、SQLエラーのシャッフルで失われてしまいます。

あなたは何か考えがありますか、問題は何でしょうか?

10
Jannik

私は解決策を見つけました。システムビューを参照しているかどうかを知るには(ドイツ語のように見える)を十分に読み取ることはできませんが、そうであれば、masterへのデータベース参照を提供する必要があります。それ以外の場合は、他の必要なデータベース参照を追加すると問題が解決します。

これについては、システムビューについて以下で説明します。 オブジェクト情報スキーマテーブルへの参照を解決

および 他のデータベース参照の場合

追加情報はここに提供されます: SQL ServerのSSDTプロジェクトのあいまいな参照の解決

3
devinbost

別のデータベースのテーブル値関数を参照するビューを含むプロジェクトがあります。リモートデータベースから使用されるフィールドを解決するために必要なデータベース参照を追加した後も、このエラーが発生していました。私は、テーブル値関数が「SELECT * FROM ...」を使用して定義されていることを発見しました。これは、優れたコーディング慣れに慣れていない誰かが作成した古いコードです。 「*」の部分を必要な列挙型フィールドで置き換え、その関数をコンパイルしてから、そのデータベースのdacpacを再作成して結果のスキーマをキャプチャし、新しいdacpacをデータベース参照として組み込んだ。ウフー!あいまいな参照は消えました! SSDTエンジンは常に、参照されるdacpacの腸に到達してすべてのフィールドを返すことができない(またはできない)ようです。確かに、私が取り組んでいるプロジェクトは通常非常に大規模であるため、コードの検証を依頼するときにできる限りのツールをツールに提供することは理にかなっていると思います。

2
user6697603

これは古い質問であることは知っていますが、エラーを検索したときに最初に出てきた質問です。

私の場合、エラーが原因でVisual Studio 2017でSqlSchemaCompareを実行できませんでした。ただし、エラーは、ソリューションの一部ではなくなったテーブル/テーブルのインデックスに関するものでした。単純なクリーンアップ/再構築は役に立ちませんでした。

ビジュアルスタジオソリューションをリロードするとうまくいきました。

1
FlorianB

これは古いトピックですが、検索エンジンで上位にランク付けされているので、うまくいった解決策を共有します。

同じエラーコードにCREATE TYPEステートメント。これは、Visual Studio 2017 SQL Serverプロジェクトのスクリプトファイルにありました。インターフェイスからユーザー定義型を追加する方法が見つからなかったためです。

解決策は、Visual Studioで、右クリックして表示されるもの以外にも、多くのプログラマビリティファイルの種類があることですAddNew Elementを選択し、検索フィールドを使用して、作成しようとしている要素を見つけます。

1

私の場合、データ層アプリケーションをエクスポートしようとしたときにこのエラーが発生しました。エラーは、データベースユーザーのリンクに関連していました。この問題を解決するには、システムユーザーの読み取り権限でサーバーにログインする必要があります。

0
Renzo Ciot

私にとっては、ユーザー定義のテーブルタイプでSQL71501が表示されていました。私のソリューションのテーブルタイプのSQLファイルがビルドとして設定されていないことがわかりました。ビルドアクションを[なし]から[ビルド]に変更するとすぐに、エラーは消えました。

0
JLWarlow