プロジェクトでは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エラーのシャッフルで失われてしまいます。
あなたは何か考えがありますか、問題は何でしょうか?
私は解決策を見つけました。システムビューを参照しているかどうかを知るには(ドイツ語のように見える)を十分に読み取ることはできませんが、そうであれば、masterへのデータベース参照を提供する必要があります。それ以外の場合は、他の必要なデータベース参照を追加すると問題が解決します。
これについては、システムビューについて以下で説明します。 オブジェクト情報スキーマテーブルへの参照を解決
および 他のデータベース参照の場合 。
追加情報はここに提供されます: SQL ServerのSSDTプロジェクトのあいまいな参照の解決
別のデータベースのテーブル値関数を参照するビューを含むプロジェクトがあります。リモートデータベースから使用されるフィールドを解決するために必要なデータベース参照を追加した後も、このエラーが発生していました。私は、テーブル値関数が「SELECT * FROM ...」を使用して定義されていることを発見しました。これは、優れたコーディング慣れに慣れていない誰かが作成した古いコードです。 「*」の部分を必要な列挙型フィールドで置き換え、その関数をコンパイルしてから、そのデータベースのdacpacを再作成して結果のスキーマをキャプチャし、新しいdacpacをデータベース参照として組み込んだ。ウフー!あいまいな参照は消えました! SSDTエンジンは常に、参照されるdacpacの腸に到達してすべてのフィールドを返すことができない(またはできない)ようです。確かに、私が取り組んでいるプロジェクトは通常非常に大規模であるため、コードの検証を依頼するときにできる限りのツールをツールに提供することは理にかなっていると思います。
これは古い質問であることは知っていますが、エラーを検索したときに最初に出てきた質問です。
私の場合、エラーが原因でVisual Studio 2017でSqlSchemaCompareを実行できませんでした。ただし、エラーは、ソリューションの一部ではなくなったテーブル/テーブルのインデックスに関するものでした。単純なクリーンアップ/再構築は役に立ちませんでした。
ビジュアルスタジオソリューションをリロードするとうまくいきました。
これは古いトピックですが、検索エンジンで上位にランク付けされているので、うまくいった解決策を共有します。
同じエラーコードにCREATE TYPE
ステートメント。これは、Visual Studio 2017 SQL Serverプロジェクトのスクリプトファイルにありました。インターフェイスからユーザー定義型を追加する方法が見つからなかったためです。
解決策は、Visual Studioで、右クリックして表示されるもの以外にも、多くのプログラマビリティファイルの種類があることですAdd。 New Elementを選択し、検索フィールドを使用して、作成しようとしている要素を見つけます。
私の場合、データ層アプリケーションをエクスポートしようとしたときにこのエラーが発生しました。エラーは、データベースユーザーのリンクに関連していました。この問題を解決するには、システムユーザーの読み取り権限でサーバーにログインする必要があります。
私にとっては、ユーザー定義のテーブルタイプでSQL71501が表示されていました。私のソリューションのテーブルタイプのSQLファイルがビルドとして設定されていないことがわかりました。ビルドアクションを[なし]から[ビルド]に変更するとすぐに、エラーは消えました。