web-dev-qa-db-ja.com

リンクされたSQLサーバーのクエリ

リンクサーバーリストに表示されているリンクサーバーを追加しましたが、クエリを実行すると、dbサーバー名でエラーがスローされます。

EXEC sp_helpserver
EXEC sp_addlinkedserver 'aa-db-dev01'
Select * from openquery('aa-db-dev01','Select * from TestDB.dbo.users')

メッセージ102、レベル15、状態1、行1
「aa-db-dev01」付近の構文が正しくありません。

23
Renju
SELECT * FROM [server].[database].[schema].[table]

これは私のために動作します。 SSMSインテリセンスは、これを構文エラーとして引き続き強調する場合がありますが、リンクサーバーが設定され、クエリがそれ以外の場合に正しく機能する場合は機能するはずです。

45

リンクサーバーの名前の前後か​​ら引用符を削除する必要があります。次のようになります。

Select * from openquery(aa-db-dev01、 'Select * from TestDB.dbo.users')

24
BTB

次を使用できます。

SELECT * FROM [aa-db-dev01].[TestDB].[dbo].[users];
6
Guoliang

オープンクエリを使用して、次のようにこのタスクを実行します。

select top 1 *
INTO [DATABASE_TO_INSERT_INTO].[dbo].[TABLE_TO_SELECT_INTO]
from openquery(
    [LINKED_SERVER_NAME],
    'select * from [DATABASE_ON_LINKED_SERVER].[dbo].[TABLE_TO_SELECT_FROM]'
)

上記の例では、オープンクエリを使用して、リンクサーバー上のデータベースから選択したデータベースにデータを選択します。

注:参照を完全にするために、次のような単純な選択を実行できます。

select top 1 * from openquery(
    [LINKED_SERVER_NAME],
    'select * from [DATABASE_ON_LINKED_SERVER].[dbo].[TABLE_TO_SELECT_FROM]'
)
3
user1477388

Select * from openquery("aa-db-dev01",'Select * from users')を試してください。データベース接続は、リンクサーバー構成で定義する必要があります。

2
UV.

受け入れられた答えは私のために働く。

また、MSSQLMSでは、オブジェクトエクスプローラーでツリーを参照して、クエリするテーブルに移動できます。

[サーバー]->サーバーオブジェクト->リンクサーバー-> [リンクサーバー]->カタログ-> [データベース]-> [テーブル]

次に、右クリック、「スクリプトテーブル」、「SELECT To」、「新しいクエリウィンドウ」

そして、JOINで使用できる正しいFROMを使用してクエリが生成されます

1
Ryano