如何从外部服务持续导入数据到SQL服务器

How to continuously import data from external service into SQL Server

我有将近一百个服务向我们的消息队列发送数据。此数据由 Java 服务处理并加载到我们 SQL 服务器中的导入 tables。加载数据后,执行一些程序将此数据加载到适当的 tables 中。最近我们不得不添加新的服务读取和加载消息实例。有人建议我们应该将数据库隔离模型更改为快照(我对数据库不是很熟悉,所以我只是做了建议的)。不幸的是,我们遇到了很多问题,所以我们不得不重复导入 tables 和上述过程 - 这当然导致了我目前正在尝试清理的巨大混乱。

我目前的理解是建议使用快照隔离,以便服务可以使用相同的 table 工作,而不会出现我们遇到的问题和错误,这些问题和错误源于我们(开发人员)方面的一些误解或实施不当。

我的问题是:是否有可能,如果可以,那么如何将数据批量加载到单个 table,转换它并加载到目标 table(一切都是并行的,所以可以说有 3 或 4 个服务在做)以不会导致死锁或数据丢失的方式。

我们的 SQL 服务器是:Microsoft SQL Server 2014 (SP2-GDR) (KB4019093) - 12.0.5207.0 (X64)

我不知道更多,但我知道例如我们不支持分区或在线索引创建 - 也许这会有所帮助。

我结束了修改服务加载数据和导入表的方式,使加载的每条记录都有自己的标识符。此外,服务不再执行导入程序,它们被安排使用 SQL 代理和 运行 每分钟一次。解决方案非常简单,虽然平均数据在服务收到数据后 30 秒存储在目标表中,但这是我们可以接受的 - 我们可以通过这种方式加载更多、更多、更多的数据。