Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 由于2个会话同时访问同一存储过程,事务(进程ID)已死锁_Sql_Sql Server 2012_Deadlock - Fatal编程技术网

Sql 由于2个会话同时访问同一存储过程,事务(进程ID)已死锁

Sql 由于2个会话同时访问同一存储过程,事务(进程ID)已死锁,sql,sql-server-2012,deadlock,Sql,Sql Server 2012,Deadlock,两个会话访问同一存储过程时发生以下错误(两个用户/会话同时访问同一存储过程时发生死锁)。错误:事务(进程ID)在另一个进程的锁资源上被死锁,并被选为死锁受害者。重新运行事务 为根据where子句中的日期筛选器删除数据而编写的存储过程。 如何在此场景或任何替代方案中使用SET DEADLOCK_PRIORITY。当您使用共享资源执行线程时,您可以预期会出现这种行为。如果您想要更准确的答案,请提供更多信息 当一个进程需要访问被另一个进程锁定的数据时,就会发生死锁。另一个进程希望从第一个进程访问数据,

两个会话访问同一存储过程时发生以下错误(两个用户/会话同时访问同一存储过程时发生死锁)。错误:事务(进程ID)在另一个进程的锁资源上被死锁,并被选为死锁受害者。重新运行事务

为根据where子句中的日期筛选器删除数据而编写的存储过程。
如何在此场景或任何替代方案中使用SET DEADLOCK_PRIORITY。

当您使用共享资源执行线程时,您可以预期会出现这种行为。如果您想要更准确的答案,请提供更多信息

当一个进程需要访问被另一个进程锁定的数据时,就会发生死锁。另一个进程希望从第一个进程访问数据,因此两个进程都无法继续。SQL Server足够聪明,可以识别此混乱并选择一个收藏夹或停止这两个进程

要解决此问题,如果可能,最好不要设置死锁优先级。具有相同优先级的用户也可能导致死锁。最好的方法是在删除时同步访问。当表上的一个删除过程处于活动状态时,另一个应等待

这是一个很好的同步示例:

如何在此场景或任何备选方案中使用设置死锁\u优先级。重新设计您的过程:1)使用updlock提示2)使用try…catch处理死锁情况,需要时重试3)在极端情况下使用applocksHi Georgi,默认为进程等待,或者我们必须设置任何参数。因为这里相同的存储过程使用不同的victimProcess ID锁定。这是一个更好的示例:。您的目标是在删除过程中锁定整个表。当表被释放时,另一个存储过程将完成它的工作。关键是,这样您将永远不会出现死锁(因为一次只有一个过程可以锁定表行),尽管会损失一些效率。如果你设定了优先顺序,那么总是有可能再次陷入僵局。