.NET报告同时从MSSQL和Oracle获取数据

时间:2018-11-01 18:55:50

标签: c# .net sql-server oracle oracle11g

我们正在使用SQL Server 2016和Oracle 11g(在升级到Oracle 12c的过程中)。 我不是.NET开发人员;因此,示例将非常有帮助。

我们的开发人员正在尝试结合来自MSSSQL(内部应用程序)和Oracle(ERP系统)的数据,以在.NET中创建报告(因此只需从这两个数据库中读取)。 开发人员坚决需要在托管MSSQL的服务器上安装Oracle客户端。

从安全性角度(表面积暴露)出发,我们鼓励我们尽可能减少表面积暴露。而且我在此blog上找到了一种可能的方法。这个blog似乎建议创建一个函数作为连接字符串。

问题:

  1. .NET(数组等)中是否没有选项将来自MSSQL和/或Oracle的数据保存在内存中,以便与另一个数据库进行比较(使用员工ID)?
  2. 由于这只是读取,因此在服务器上安装完整的Oracle客户端是否过大?
  3. 如果您需要从两个数据库中提取数据,专家在这里怎么样?

谢谢。

2 个答案:

答案 0 :(得分:0)

在某些时候,一台计算机将必须具有Oracle客户端。没有它,我不知道连接Oracle的方法。

我可以想到两种方法来做到这一点。您可以直接在SQLServer中link Oracle tables。我想您可以然后使用SQLServer方言查询Oracle表。我敢肯定这样做会降低性能,特别是如果跨RDBMSes加入。

第二种选择是在SQLServer上具有某种表,该表具有Oracle数据的副本。根据有多少数据或是否保留数据,它可能比通过联接查询链接表要快。它可以是永久表或临时表。您仍然需要query the Oracle machine,并根据需要或按计划完成此操作。

如果数据很少,甚至可能不需要表。

您还可以拥有另一台执行Oracle DB查询并将数据移至SQLServer的计算机。您不需要在SQLServer上使用Oracle客户端,而在该计算机上就可以使用。

答案 1 :(得分:0)

我将考虑构建一个与MSSQL服务器不同的服务器上运行的Windows服务,该服务将利用托管的Oracle客户端按计划从Oracle到MSSQL服务器的ETL数据,这将允许您的.NET报告访问报告数据。从一个位置,即您的MSSQL服务器。