本地服务器(SCADA系统)使用SQL Server,链接服务器(ERP系统)使用Oracle。
目前的情况如下:
ERP系统在其服务器上有一个表,所有批次订单都一致地更新到该表中。我可以访问该表,但不能从ERP端操作/配置任何内容。任何配置/查询都必须在本地服务器上完成。
我尝试直接从ERP表中查询行,但由于某些原因导致大约30秒的延迟。然后,我创建了一个本地表,并插入了ERP表中的所有行,以查看如果我从新的本地表查询,是否仍然会有延迟。没有延迟。所以我想,如果我可以像ERP表一样保持本地表的更新,我只需要使用本地表。
所以我的问题是,如果不能配置/操作ERP端,有没有一种方法可以将ERP表上更新的所有新行插入到我们的本地表?
发布于 2021-01-28 12:04:41
通常,ERP系统的DBA不喜欢更改主ERP模型模式,因为它会在应用程序升级期间创建更多要处理的对象--通常首选的是普通应用程序升级。
他们有时可以容忍的是,在ERP表上创建触发器,将其放入另一个Oracle模式中的另一个表(您的设计)中,您可以随意操作这些触发器。
从这个表中,您可以决定在执行时通过链接服务器设置标志将数据提取到MSSQL中,或者删除旧数据,以便最大限度地减少每次调用的数据提取。通常,在新的Oracle Schema中调用存储过程来执行表更新或删除似乎工作得更好,因为链接服务器在将数据拉到MSSQL端进行操作时非常慢。
另一种替代方法(比使用linkedServer快得多)是使用Windows服务或windows服务器上的计划脚本(Ex VBS)与Oracle和MSSQL进行对话,以实现相同的目的。这可以直接在原始表上完成,也可以在新表中完成。您需要根据接近实时的需求计算出轮询间隔。
https://stackoverflow.com/questions/65930706
复制相似问题