他のサーバーに複数のサーバーがリンクされているSQLServerに展開されることになっているSSDTデータベースプロジェクトを作成したいと思います。これらのリモートサーバー上のデータベース(「MyBusinessDB」)は別のSSDTソリューションにあるため、これを「MyBusinessDB.dacpac」として使用します。
他のデータベースまたはDACPACファイルへの参照を追加して、データベースオブジェクトを正しく参照することが許可されているため、プロジェクトへの参照としてMyBusinessDB.dacpacを追加したいと思います。
これ Peter Schottによる記事 データベース参照の追加に関する基本を説明します。
参照されるデータベースが「Other/Different Server」にあることを定義することもできます。
MyBusinessDB.dacpacファイルを参照し、「同じサーバー」上にあるように構成しました。そのスキーマオブジェクトを使用して、SQLコードでそれらを参照することができます。
ただし、このデータベースをリモートサーバーで使用したいので、事前にリンクサーバー名を追加する必要があります。いくつかのインスタンスがあるため、リンクサーバー名は可変である必要があります。残念ながら、データベース参照を別の/別のサーバーに配置するように構成するとすぐに、VisualStudioは参照されたMyBusinessDB.dacpacファイルのスキーマオブジェクトの検証に失敗します。
別の構文を試しましたが、参照作成ダイアログ自体によって提案された構文も試しました(サンプル/提案はこのウィンドウの下部に表示されます)。
SELECT * FROM [$(OtherServer)].[$(MyBusinessDB)].[Schema1].[Table1]
私の素朴な期待は、次のように理解されることです。「意味がわかります。変数「MyBusinessDB」でMyBusinessDB.dacpacを参照し、「OtherServer」でこれを使用することを通知します。後で...」
しかし、これを使用すると、コンパイラエラーも発生します。 dacpacのスキーマが解決されることはありません。
まったく同じdacpacファイルを参照し、その前に別の変数(サーバー名)を追加しただけなので、なぜこれがdacpacのスキーマを正しく読み取れないのですか?この「機能」はどのように正しく使用する必要がありますか?
データベース参照を「別のデータベース、別のサーバー」に変更する必要があります。セットアップは同じサーバー用に構成されているため、オブジェクト参照には4つの部分ではなく、3つの部分しか期待されていません。
データベースが存在するサーバーに関してより柔軟性が必要な場合は、同義語で遊ぶことができます。