【发布时间】:2015-09-21 12:17:56
【问题描述】:
我正在从事一个目前正在生产中的大型项目。
我们有一个大流程,最近更改为使用In-Memory Tables 和 SQL 2014 以提高性能。
流程使用:
- 51 个内存中 SQL 表。
- 50 个存储过程,从大约 150 个常规 SQL 表中加载数据(插入)。
- 300 次验证(短存储过程)从这 50 个内存表中进行选择(如果存在,则插入到保存验证错误的内存表)。
我们从 ADO.Net 调用这个 Process,首先加载存储过程然后验证,每个 SP 使用不同的SQL Connection。
在正常使用中,一切正常,大约需要 1.5 秒。
进行 30 分钟的压力测试(6 个客户端 X 100 个任务)。
几分钟后,我们开始收到SQL Exception(每 20 个任务 1 个 SQL 异常):
A previous transaction that the current transaction took a dependency on has aborted,
and the current transaction can no longer commit.
Transactions in Memory-Optimized Tables
异常不清楚。
在此过程中,我们没有使用BEGIN TRANSACTION。 SQL Exception 每次出现在不同的存储过程中。
经过几天的调查,我们陷入了困境,我们不再有任何想法。 寻求您的帮助以了解可能导致此异常的原因以及如何处理它。
【问题讨论】:
-
我看过这篇文章,但我不确定这是解决此问题的最佳方法。发生此异常是由于某种原因,我想了解原因。
-
除此之外没有其他错误?您是否在程序中执行更新或删除?
-
@Evk 有时也会出现超时...我执行更新,但对于此检查,我已标记所有更新并且异常仍然发生。
-
The Exception is not clear是的,因为您遗漏了大部分信息。发布异常 ToString,包括调用堆栈和它发生的代码。您似乎正在使用 System.Transactions 。详细说明它的用法。
标签: .net sql-server stored-procedures sql-server-2014 in-memory