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を使用しました)
私はそれをうまく動かすことができました:
新しいデータベースプロジェクトmaster
を作成しました。そこに私はフォルダを作成しましたServer Object
とファイルLinkedServer.sql
。 SQLファイルにリンクサーバーを追加しました。
GO
EXECUTE sp_addlinkedserver @server = N'LinkedServer', @srvproduct = N'sqlserver', @provider = N'SQLNCLI', @datasrc = N'LinkedServer.domain';
データベースProject master
をソリューションに追加し、元のデータベースプロジェクトで参照した後、最初の構文を使用してプロジェクトをビルドできました。
CREATE VIEW dbo.vwStatus
AS
SELECT StatusID, StatusName
FROM OPENQUERY(LinkedServer, 'SELECT * FROM [DB].[dbo].tbStatus') AS derivedtbl_1