2011-02-23 49 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