我们正在使用SQL Server 2016和Oracle 11g(在升级到Oracle 12c的过程中)。 我不是.NET开发人员;因此,示例将非常有帮助。
我们的开发人员正在尝试结合来自MSSSQL(内部应用程序)和Oracle(ERP系统)的数据,以在.NET中创建报告(因此只需从这两个数据库中读取)。 开发人员坚决需要在托管MSSQL的服务器上安装Oracle客户端。
从安全性角度(表面积暴露)出发,我们鼓励我们尽可能减少表面积暴露。而且我在此blog上找到了一种可能的方法。这个blog似乎建议创建一个函数作为连接字符串。
问题:
谢谢。
答案 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服务器。