DB1、DB2、DB3など、いくつかのデータベースがあります。
それらは同一のコード ベースを持つ必要があるため、Visual Studio 2012 で DB プロジェクトを使用し、プロジェクトと UAT/Prod DB1 との比較に基づいてデプロイ用の SQL スクリプトを生成します。次に、このスクリプトが DB1-DBn に適用されます。
この DB プロジェクトの歴史の中で初めて、ハードコーディングされたデータベース名を含む関数を作成する必要がありました。例:
inner join DB1.schema.table1 as t1 on
そして、VS は DB1 が存在しないと信じているように見えるため、そのデータベース参照に関連する多くのエラーが原因で、プロジェクトをビルドできないか、比較を更新できないか、スクリプトを生成できません ([スクリプトの更新] ボタンと [スクリプトの生成] ボタンが無効になっています)。
プロジェクトレベルのSQLCMD変数を追加してデフォルト値$(DB)
に設定し、それを次のように使用しようとしましたDB1
inner join [$(DB1)].schema.table1 as t1 on
エラーを回避しますが、違いはないようです。
編集:
循環プロジェクト参照をそれ自体に追加し、手動で追加しようとしていたのと同じ変数をそれに割り当てるという提案がありましたが、それを達成する方法がわかりません。