在C#中有效地连接来自Oracle和SQL Server的两个表
本文关键字:Server 两个 SQL 有效地 连接 Oracle | 更新日期: 2023-09-27 18:19:54
所以我有两个系统,我经常必须将它们连接在一起才能显示某些报告。我有一个系统,它将元数据存储在SQL Server中存储的文档上,通常按零件号存储。我想获取文档的零件号列表来自我们ERP系统中的Oracle表。我目前的方法是这样的:
- 将数据从ERP(Oracle)系统中获取到
DataTable
中 - 从一列中编译零件号的
string[]
- 使用
IN()
语句将文档(MSSQLSVR)系统中的所有文档信息获取到另一个DataTable
中 - 将列添加到ERP
DataTable
,在行之间循环 - 从文档
DataTable
、if(erpRow["ITEMNO"] == docRow["ITEMNO"])
中填写文档信息
在我看来,这真的很低效。现在很明显,我不能使用一个连接字符串来JOIN
这两个表,也不能使用数据库链接,所以我认为必须有两个调用,每个数据库一个。有没有其他方法可以把这两个集合连接在一起?
我建议使用LikedServer方法(http://msdn.microsoft.com/en-us/library/ms188279.aspx)。在SQL Server端编写一个存储过程,从Oracle链接服务器中提取数据,在本地执行JOIN并返回组合数据。
SQL Server被设计为能够高效地执行JOIN。无需尝试在应用程序层中重新创建该功能。
由于您已经排除了数据库链接,我将执行以下
- 将数据从ERP(Oracle)系统中获取到DataTable中
- 通过表值参数将DataTable作为参数传递给SQL Server
- 返回数据(无循环更新旧集)