跨多个数据库的交叉引用

Dav*_*vey 5 c# sql sql-server ado.net ms-access

我有两个数据库,一个是MS Access文件,另一个是SQL Server数据库.我需要创建一个SELECT命令,根据Access数据库中的数据过滤SQL Server数据库中的数据.使用ADO.NET实现这一目标的最佳方法是什么?

我可以将每个数据库中的所需数据提取到两个新表中.将它们放在一个数据集中.然后在数据集上执行另一个SELECT命令来组合数据?

附加信息:Access数据库不是永久性的.要使用的Access文件由用户在运行时设置.

这里有一些背景信息来解释为什么有两个数据库.我的公司使用CAD程序来设计建筑物.该程序将CAD模型中使用的材料存储在Access数据库中.每个型号都有一个文件.我正在编写一个程序,为每个模型生成成本信息.这基于存储在SQL Server数据库中的当前材料价格.


我的解决方案

我最终只是将访问数据库中的数据导入SQL Server db中的临时表.执行所有必要的处理然后删除临时表.这不是一个漂亮的解决方案,但它有效.

Tom*_*m H 3

如果不需要的话,您不想同时提取两个数据集。您在实施 Tomalak 的解决方案时也会遇到麻烦,因为文件位置可能会发生变化,甚至可能无法供服务器本身使用。

我的猜测是,您的用户设置了一个包含人员/产品或他们感兴趣的任何内容的 Access 数据库,这就是您需要在两个数据库中进行选择的原因。如果是这种情况,Access 表可能比 SQL Server 表小。最好的办法是提取 Access 数据,然后使用它生成对 SQL Server 的筛选查询,以便可以最大限度地减少通过网络发送的数据。

所以,最重要的事情是:

  1. 过滤服务器上的数据,以便最大限度地减少网络流量,而且数据库的过滤速度比 ADO.NET 更快
  2. 如果您必须选择一个数据集来拉入应用程序,请拉入较小的数据集,然后使用它来过滤其他表。