0

これをどのように表現すればよいかよくわかりません。問題は次のとおりです。

データを取得するために別のシステム (AS400) に参加する必要がある項目が 1 ~ n 個あります。

の外側で基準openrowsetを指定すると、永遠に時間がかかります。whereopenrowset

select * from openrowset('my connection string', 'select code, myfield from myTable') 
where code = @code

openrowset私のアイデアは、アイテム番号を受け取り、動的SQLを使用してそれを文字列に挿入する関数を作成することでした。

declare @cmd varchar(1000)
set @cmd = 'select * from openrowset('my connection string',
        ''select code, myfield from myTable where code = ' + @code + ''')'

どうやらinsert.. exec..、関数内で戦略を使用することはできません。これを達成するためのより良い方法はありますか?を使用して外部データが必要な結合でこれを使用するつもりでしたcross apply

私は と とは結婚していませtvfcross applyが、このデータをすばやく取得する方法が必要です。助けてくれてありがとう。

4

1 に答える 1

1

OPENQUERY を使用し、リモート サーバーで提供されたクエリを直接フィルター処理する必要があります。このようにして、フィルタリングが他のサーバーで行われることを確認します。逆に、リモートサーバーからすべてのデータを取得してローカルでフィルター処理することができます。これが、実行が非常に遅い理由を説明しています。したがって、2 番目のアプローチですが、OPENQUERY を使用するのが理想的なソリューションです。

これにリンクされたサーバーを作成する必要があります。

クエリ構文は、T-SQL ではなく、リモート サーバーのものであることを考慮する必要があります。

OPENQUERY

于 2012-04-10T23:24:01.033 に答える