内存优化表事务提交依赖关系的问题



我正在使用SQL Server 2016,并且正在处理一组由一个父存储过程调用的存储过程。所有存储过程只进行读取以返回一个结果集。我已经确认所有必要的对象都在缓存中,并且没有发生物理读取。所有读取都是在索引上完成的,不进行表扫描。这个过程过去到处都是临时表。为了帮助加快这个过程,我将所有临时表替换为仅具有模式持久性的内存优化表。在这样做之后,在负载下,我看到这被web api记录了很多。

Transaction exceeded the maximum number of commit dependencies and the last statement was aborted. Retry the statement. The statement has been terminated.

没有存储过程使用事务。我已经在谷歌上搜索了一些,但我仍然在为这条消息而挣扎。

正如Microsoft的文档所提到的,您需要将delete from MemOptimizedTable放在存储过程本应具有create #TempTable的位置。我以为我做到了,但我最终错过了一个导致碰撞的地方。在多删除了一条之后,现在一切都好了。