30

SSDT にデータベース プロジェクトがあり、別のデータベースのオブジェクトを参照するビューをインポートすると、エラー SQL71561 が表示され、次の行に沿って説明が表示されます。

エラー 4 SQL71561: ビュー: [schema].[viewname] にオブジェクト [other_db].[schema].[table].[column] への未解決の参照があります

私はこれを理解するのにしばらく時間を費やしたので、他の人がこれに遭遇するのを助けるために、私のために働いた答えを投稿します.

4

6 に答える 6

36

これを解決するために、ダイアログの「データベース変数」フィールドをクリアして、他のデータベースへの参照を追加しました。このフィールドをクリアしないと、スキーマの比較を行うときに、SSDT がデータベース変数名を使用して更新スクリプトを生成し、失敗します。

  1. プロジェクトにデータベース参照を追加します。
  2. 私の場合、他のデータベースは同じソリューションの別のプロジェクトだったので、[データベース参照の追加] ダイアログの最初のドロップダウンで選択できました。
  3. 「データベース名」フィールドのテキストが正しいことを確認してください。
  4. 「データベース変数」フィールドをクリアします。

「使用例」のテキストを見て、期待どおりであることを確認します。「OK」をクリックして参照を追加すると、「未解決の参照」エラーが処理されます。

これを行った後、スキーマの比較を行うことができましたが、プロジェクトをビルドしようとすると次のエラーが発生しました。

エラー 408 SQL00208: オブジェクト名 'db.schema.table' が無効です。

プロジェクトのプロパティに移動し、[共通オブジェクトの拡張 Transact-SQL 検証を有効にする] のチェックを外すと、プロジェクトを正常にビルドできました。

于 2012-08-28T14:21:32.050 に答える
15

私の問題は、ビューからでした。私が持っていたビューでは...

...FROM [MyDatabase].[dbo].[MyTable]

私はそれを交換しました...

...FROM [MyTable]

その理由は、bacpac/dacpac を別のデータベース名にインポートしている可能性があるため、[MyDatabase] への参照が無効になる可能性があるためです。

于 2014-02-10T16:54:51.817 に答える
0

ビルド順序が正しくない場合、これに遭遇する可能性があります。

ソース管理からプロジェクトの新しいコピーを取得して「ソリューションのビルド」を行っているときに、これに遭遇しました。

参照が機能しない場合は、参照されたデータベース [other_db] を構築してください。[other_db] をビルドすると、参照が機能しました。

于 2015-07-13T13:39:34.687 に答える