2013-01-31 9 views
9

私のデータベースプロジェクトでは、リンクサーバーへの参照を追加しました。私はビューでこのリンクサーバーを使用して、自分のデータベースプロジェクトをビルドしようとすると、それはリンクサーバー上で参照スキーマのいずれかへの参照を理解することはできませんので、SSDTはエラーを報告します。SQL Serverデータベースプロジェクトのリンクサーバーのデータベース参照が必要ですか?

[LinkedServer].[DB1].[dbo].[Table1] 

上記のだろうがエラーを返しますSSDTは[DB1].[dbo].[Table1]への参照を解読できません。このデータベースへの参照を追加しようとしましたが、SSDTには.dacpacファイル(別のデータベースプロジェクトによって生成されたファイル)またはプロジェクトのデータベースと同じサーバー上のシステムデータベースが必要でした。

外部データベースの参照はどのように処理しますか?プロジェクトがではなく、のSSDTデータベースプロジェクトであるリモートデータベースを参照する必要があるユースケースがあります。私の場合、私は別の会社のデータベースにアクセスしており、SSDTプロジェクトとしてこのデータベースをバージョン管理下に置いています。

+0

回避策として、ローカルサーバーでリモートサーバーから*を選択したビューを作成することができます – cha

+1

@chaこれが回避策であることを説明できますか? – stevebot

+0

SSDTはリモートサーバー上のテーブルではなく、ローカルサーバーのビューを参照するため、 – cha

答えて

12

リモートデータベースの新しいSQLプロジェクトを作成し、参照する必要がある(データベース全体である必要はない)任意のオブジェクトをプロジェクトに配置し、そのプロジェクトをデータベース参照としてプロジェクトに追加します。リモートデータベースをデプロイする必要はありません。使用するオブジェクトの定義を参照できるだけです。

+0

より具体的に教えていただけますか?同じソリューションで新しいsqlプロジェクトを作成し、そのプロジェクトを参照する場合は、新しいプロジェクトで新しいテーブルオブジェクトを作成します。データベース名を指定する方法と、古いプロジェクトから参照する方法を教えてください。これは、プロジェクト名がリンクされたサーバー名であることを意味しますか? – Muflix

4

最終的に解決したオプションは、データのインポートにSSISを使用することでした。このようにして、リモートデータの転送がETLレイヤーで発生しました。私たちのデータベースはこのようにリモートデータベースを参照していないため、パフォーマンスを向上させることができます(ネットワーク経由の転送やサーバー間の結合などは不要です)。

SSISまたは同様の方法を使用して、データベースプロジェクトが参照できるローカルテーブルにデータをETLすることをお勧めします(外部プロジェクト参照を必要とせずに)。

関連する問題