web-dev-qa-db-ja.com

SSDTデータベース参照の「OtherServer」はどのように機能しますか?

他のサーバーに複数のサーバーがリンクされている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のスキーマを正しく読み取れないのですか?この「機能」はどのように正しく使用する必要がありますか?

1
Magier

データベース参照を「別のデータベース、別のサーバー」に変更する必要があります。セットアップは同じサーバー用に構成されているため、オブジェクト参照には4つの部分ではなく、3つの部分しか期待されていません。

データベースが存在するサーバーに関してより柔軟性が必要な場合は、同義語で遊ぶことができます。

1
Kyle J V

私はこれをローカルで試しましたが、問題なく解決され、存在しない1つの列についても文句を言います。

enter image description here

参照プロパティを確認してください。4つのパーツ名で使用されているものを強調表示しました。

enter image description here

1
Eugene Niemand