データベースプロジェクトでOPENQUERYを使用したリンクサーバーを使用する


10

SQL Server 2008でTFSに投入したいデータベースを実行しています。したがって、私はDBをインポートしたVisual Studio 2013データベースプロジェクトを使用しました。たくさんのエラーを修正した後、エラーが1つだけ残っています。

1つのビューではOPENQUERY、リンクサーバーへのアクセスに使用される開発者。そこで、適切なデータベースを含むDACPACをインポートAdd Database Referenceし、次の参照オプションを使用してプロジェクトに追加しました。

データベース参照の設定

スクリプトの初期バージョン

以下は、元のビュー作成の短いバージョンです。

CREATE VIEW dbo.vwStatus
AS
SELECT     StatusID, StatusName
FROM       OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1

これにより、次のエラーが発生します。

エラー136 SQL71501:ビュー:[dbo]。[vwStatus]には、オブジェクト[LinkedServer]への未解決の参照があります。

最初の試み

それで、サーバー名変数を挿入しようとしました

FROM       OPENQUERY($(LinkedServer), 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1

につながる

エラー176 SQL46010:$(LinkedServer)付近の構文が正しくありません。

さらなる試み

私は少し手探りで次のことを試しました(引用符付き識別子を有効にした場合と有効にしない場合):

FROM       OPENQUERY("$(LinkedServer)", 'SELECT * FROM [DB].[dbo].tbStatus') AS 
FROM       OPENQUERY([$(LinkedServer)], 'SELECT * FROM [DB].[dbo].tbStatus') AS 
FROM       OPENQUERY([LinkedServer], 'SELECT * FROM [DB].[dbo].tbStatus') AS 
FROM       OPENQUERY("LinkedServer", 'SELECT * FROM [DB].[dbo].tbStatus') AS 

常にエラーが発生します。

私がここで見落としていることはわかりません。あなたは?御時間ありがとうございます!

(残念ながら、visual-studio-2013タグを追加できないため、visual-studioを使用しました)

回答:


9

私はそれをうまく動かすことができました:

新しいデータベースプロジェクトを作成しましたmaster。そこにフォルダServer Objectとファイルを作成しましたLinkedServer.sql。SQLファイルにリンクサーバーを追加しました。

GO
EXECUTE sp_addlinkedserver @server = N'LinkedServer', @srvproduct = N'sqlserver', @provider = N'SQLNCLI', @datasrc = N'LinkedServer.domain';

データベースプロジェクトmasterをソリューションに追加し、元のデータベースプロジェクトで参照した後、最初の構文を使用してプロジェクトをビルドできました。

CREATE VIEW dbo.vwStatus
AS
SELECT     StatusID, StatusName
FROM       OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1

私はまだそこLinkedServers.sqlファイルをマスタープロジェクトを持つにもかかわらず、仕事にこれを取得することはできません
テスト

まあ、それ以上の情報なしで助けるのは難しいです。おそらく別の質問をする方が良いでしょう。ソリューションでマスタープロジェクトを参照することが重要です。それ以外の場合、これは説明したとおりに機能しました。
2014年

あなたのソリューション内-LinkedServer DBAとのdacpacまたはプロジェクトはありますか?
Martin Meeser、2015年

こんにちは、思い出せませんが、第2段落で、dacpacsを使用したと書きました。しかし、最終的なソリューションでは、マスターDBのデータベースプロジェクトを参照しました。
2015年

1
「LinkedServer.sql」ファイルのビルドアクションが「Build」に設定されていることを確認する必要があることに注意してください。厄介なことに、VSは、事前展開スクリプトからリンクサーバーを認識していないようです。
タラン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.