提案された解決策を提供してくれた Tiran に感謝します。Tiran が行っていたように、SQL サーバー経由で複数のテーブルを参照しようとしている人のために、追加の情報があります。
複数のソース (進行状況)、同じテーブル構造から同時にデータを取得し、データ ウェアハウス (SQL Server) に挿入しようとしています。だから私は、異なるデータベースで複数の同じ構造化テーブルの結合を試みているだけです。Tiran のソリューションは私を同じ道に導きましたが、Progress データベースのリンクは面倒なプロセスであり、これをまとめるために 2、3 日の自由時間 (彼の見積もり) を持つ Progress DBA を見つける必要がありました。Progress の担当者と直接話したところ、Progress 側で共用体を使用してビューを作成すると、ビュー内の各ソースからデータが同時にではなく順次抽出されることも指摘されました。しかし、これは私たちのニーズを解決し、Progress 側でテーブルをリンクする処理を完全にスキップするように見える別の発見につながりました。
3 つのソースと同じテーブルの例を次に示します (これはクロス ソース結合された異なるテーブルでも機能するはずです)。ここにあるすべての名前は、例をわかりやすくするために提供されています。
Source 1 - Table_A
Source 2 - Table_A
Source 3 - Table_A
- source1 という名前のソース 1 への ODBC 接続を作成します。
- source2 という名前の Source 2 への ODBC 接続を作成します。
- source3 という名前の Source 3 への ODBC 接続を作成します。(注: 通常、接続設定を [Read Uncommitted] に設定する必要があります)。
SQL Server で、各ソースへのリンク サーバー接続を作成します。
ls_source1
ls_source2
ls_source3
Progress データベースを参照する必要がある SQL Server データベースで、ユニオンを使用して 3 つの異なるリンク サーバー接続を結合するビューを作成します。リンク サーバーの参照は、それぞれ openquery を使用する必要があります。各リンク サーバー ソースからの select * を使用するこの例では、すべての列が各ソースから同じ名前を付けられ、同じ構造になっていることを前提としています。
CREATE VIEW table_name_v as
SELECT *
FROM
(SELECT *
FROM OPENQUERY(ls_source1,
'select *
from source1.dbo.Table_A
')
union
SELECT *
FROM OPENQUERY(ls_source2,
'select *
from source2.dbo.Table_A
'
union
SELECT *
FROM OPENQUERY(ls_source3,
'select *
from source3.dbo.Table_A
'
)
) x
ビューが作成されたので、異なる Progress ソースの 3 つのテーブルすべてを同時にクエリできるようになりました。Progress 側での特別な設定は必要ありません。
私が現在回避策に取り組んでいるという重要な警告があります。64 ビット SQL Server を使用する 64 ビット マシンを使用している場合は、64 ビット ドライバーを使用して、リンク サーバー オプションで Progress データベースに接続する必要があります。私のニーズでは、同じマシン上に 32 ビットと 64 ビットの両方のドライバーが必要であり、同じマシン上で一緒にうまく動作しないように見えるため、問題が発生しました。64ビットと32ビットの両方のドライバーを同じマシンにインストールできました(そのドライバーのリンクを送信するはずのProgressのWebサイトに不具合がありましたが、誰かに正しい場所に案内してもらうことができました64 ビットの odbc ドライバーを取得します。平均的なユーザーは両方のドライバーを必要とせず、64 ビットのみを使用できます。別の回避策として、私が' 両方のドライバーを同じマシンに共存させることができません。Connx 社が、この問題を解決する 64 ビット/32 ビット ブリッジを提供するドライバーを提供していることを確認しました。ただし、理想的には、サードパーティのソフトウェアは必要ありません。
残念ながら、セットアップして使用していたリンクサーバーが正しく機能しなくなったため、新しい問題が発生しました。二歩進んで、一歩下がって……。
他の人が見ていると確信しているので、私の発見を共有したいと思いました。