4

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

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

没有一个存储过程使用事务。我已经对它进行了一些谷歌搜索,但我仍在努力处理该消息。

4

1 回答 1

2

正如微软的文档所提到的,你需要把delete from MemOptimizedTable你的存储过程放在有create #TempTable . 我以为我做到了,但最终我错过了一个导致碰撞的地方。在添加了一个额外的删除之后,现在一切都好了。

于 2020-03-30T21:22:55.927 回答