2011-02-23 57 views
1

概述應用的相同表:
我有一個Delphi應用程序,其允許用戶給輾過在不同系統上MySQL數據庫查詢,使用TADOQuery組件來檢索數據。用戶可以通過運行兩個單獨的查詢從兩個不同系統上的相同表中檢索數據(例如system1和system2上的database_abc中的table_xyz),然後將這兩組數據寫入文件並手動連接到PC上以形成一個報告。SQL查詢在多個系統上的

問:
是否有可能從不同的系統使用一個查詢相同的表/數據庫中選擇數據?我非常確信,由於TADOQuery的連接字符串不得不指向單個系統,所以這是不可能的,但我想確保這是正確的。

我知道,它可能在同一系統上的兩個不同的數據庫由兩個相同的表中檢索數據,通過使用UNION語句,如:
​​

我需要做的就是類似上述例子只從不同系統上的數據庫中檢索數據。基本上,是否有可能以某種方式將連接字符串合併到SQL語句中,或以某種方式以不同方式連接?

就像我說的,我敢肯定,這是不可能的,但它不傷害檢查!

+0

有了MSSQL服務器,這是可能的,因爲你有一個「鏈接服務器」的概念。因此,server1知道服務器1是一個鏈接服務器,就查詢而言,他們可以將鏈接服務器視爲它是由服務器名稱前綴的不同表。但是我不瞭解MySQL,但是您可能想要搜索一下,看看MySQL是否支持類似的東西。 – 2011-02-23 10:58:21

+0

我相信聯邦存儲引擎支持類似http://dev.mysql.com/doc/refman/5.5/en/federated-description.html – 2011-02-23 11:00:12

回答

2

這就是所謂的「分佈式查詢」,並且需要數據庫引擎支持。在MySQL中,這可以幫助您:http://dev.mysql.com/tech-resources/articles/mysql-federated-storage.html(可從5.0開始)。在Oracle中稱爲「數據庫鏈接」,Shiv Kumar在MS SQL中稱爲「鏈接服務器」。 聯邦成員引擎的一個缺點是它需要創建一個鏡像「遠程」表的表,而其他數據庫僅允許您在建立到遠程服務器的鏈接時訪問遠程表,而不必保留聲明同步中。此外,遠程數據庫必須是另一個MySQL數據庫(其他引擎支持針對etherogenous服務器的分佈式查詢)。

+0

聽起來就像我正在尋找的東西 - 謝謝! – Jeedee 2011-02-28 12:49:36