在C#中有效地连接来自Oracle和SQL Server的两个表

本文关键字:Server 两个 SQL 有效地 连接 Oracle | 更新日期: 2023-09-27 18:19:54

所以我有两个系统,我经常必须将它们连接在一起才能显示某些报告。我有一个系统,它将元数据存储在SQL Server中存储的文档上,通常按零件号存储。我想获取文档的零件号列表来自我们ERP系统中的Oracle表。我目前的方法是这样的:

  1. 将数据从ERP(Oracle)系统中获取到DataTable
  2. 从一列中编译零件号的string[]
  3. 使用IN()语句将文档(MSSQLSVR)系统中的所有文档信息获取到另一个DataTable
  4. 将列添加到ERP DataTable,在行之间循环
  5. 从文档DataTableif(erpRow["ITEMNO"] == docRow["ITEMNO"])中填写文档信息

在我看来,这真的很低效。现在很明显,我不能使用一个连接字符串来JOIN这两个表,也不能使用数据库链接,所以我认为必须有两个调用,每个数据库一个。有没有其他方法可以把这两个集合连接在一起?

在C#中有效地连接来自Oracle和SQL Server的两个表

我建议使用LikedServer方法(http://msdn.microsoft.com/en-us/library/ms188279.aspx)。在SQL Server端编写一个存储过程,从Oracle链接服务器中提取数据,在本地执行JOIN并返回组合数据。

SQL Server被设计为能够高效地执行JOIN。无需尝试在应用程序层中重新创建该功能。

由于您已经排除了数据库链接,我将执行以下

  1. 将数据从ERP(Oracle)系统中获取到DataTable中
  2. 通过表值参数将DataTable作为参数传递给SQL Server
  3. 返回数据(无循环更新旧集)