首页 > 解决方案 > 有没有办法自动插入在链接服务器上更新的行?

问题描述

本地服务器(SCADA 系统)使用 SQL Server,链接服务器(ERP 系统)使用 Oracle。

目前的情况如下:

ERP 系统在其服务器上有一个表格,所有批次订单都在该表格中不断更新。我可以访问该表,但我无法从 ERP 端操作/配置任何内容。任何配置/查询都必须在本地服务器上完成。

我尝试直接从 ERP 表中查询行,但由于某种原因导致了大约 30 秒的延迟。然后我创建了一个本地表并插入了 ERP 表中的所有行,看看如果我从新的本地表中查询是否还会有延迟。那里没有延误。所以我想如果我可以像 ERP 表一样保持本地表的更新,我只需要使用本地表。

所以我的问题是,如果没有配置/操作 ERP 端的能力,有没有办法将 ERP 表上更新的所有新行插入到我们的本地表中?

标签: sql-serveroracle

解决方案


通常,ERP 系统的 DBA 不喜欢更改主要的 ERP 模型模式,因为它会在应用程序升级期间创建更多要处理的对象 - 通常首选普通应用程序升级。

他们有时会容忍的是将 ERP 表上的触发器创建到另一个 Oracle 模式中的另一个表(您的设计)中,您可以随意操作该表。

从此表中,您可以决定通过链接服务器设置标志将数据拉入 MSSQL,或者删除旧数据,以便每次调用都最小化数据获取。通常在新的 Oracle 模式中调用存储过程来执行表更新或删除似乎效果更好,因为链接服务器在将数据拉到 MSSQL 端处理它们时非常慢。

另一种选择(比使用linkedServer 快得多)是在Windows 服务器上使用Windows 服务或预定脚本(例如VBS)与Oracle 和MSSQL 对话以实现相同的目标。这可以直接在原始表上完成,也可以在新表上完成。您将根据您的近实时要求计算出您的轮询间隔。


推荐阅读