【发布时间】:2016-12-20 13:49:24
【问题描述】:
我们在通过调用存储过程从并行线程对两个 SQL Server 表执行 CRUD 时遇到了提到的死锁异常,这里是详细的场景:
我们有一个桌面应用程序,我们在 100 到 150 个并行线程中启动一个代码块,代码块使用 SQL Bulk Copy 在 TableA 中插入并调用三个存储过程,存储过程执行插入、更新和根据 TableA 中的某些选择删除 TableB。
一旦应用程序开始执行线程,SQL Server 就会开始为一定数量的线程抛出上述死锁异常,而某些线程运行良好。
异常消息: 事务(进程 ID 160)与另一个进程在锁资源上死锁,并已被选为死锁牺牲品。重新运行事务。
提前感谢您提供这方面的任何帮助。
谢谢。
【问题讨论】:
标签: sql-server multithreading transactions azure-sql-database