返回顶部
首页 > 资讯 > 错误编码 >SQLServer 错误 1205 事务(进程 ID %d)与另一个进程被死锁在 %.*ls 资源上,并且已被选作死锁牺牲品。 重新运行该事务。 故障 处理 修复 支持远程
  • 338
分享到

SQLServer 错误 1205 事务(进程 ID %d)与另一个进程被死锁在 %.*ls 资源上,并且已被选作死锁牺牲品。 重新运行该事务。 故障 处理 修复 支持远程

死锁进程事务 2023-11-05 02:11:57 338人浏览 八月长安
摘要

详细信息 Attribute 值 产品名称 SQL Server 事件 ID 1205 事件源 MSsqlSERVER 组件 SQLEngine 符号名称 LK_VICTIM 消息正文 事务(进程 ID %

详细信息

Attribute
产品名称 SQL Server
事件 ID 1205
事件源 MSsqlSERVER
组件 SQLEngine
符号名称 LK_VICTIM
消息正文 事务(进程 ID %d)与另一个进程被死在 %.*ls 资源上,并且已被选作死锁牺牲品。 重新运行该事务。

说明

在单独的事务上以相互冲突的顺序访问资源,从而导致死锁。 例如:

  • Transaction1 更新 Table1.Row1,而 Transaction2 更新 Table2.Row2
  • Transaction1 尝试更新 Table2.Row2 ,但被阻止,因为 Transaction2 尚未提交且尚未释放其锁
  • Transaction2 现在尝试更新 Table1.Row1 ,但被阻止,因为 Transaction1 尚未提交且尚未释放其锁
  • 之所以出现死锁,是因为 Transaction1 在等待 Transaction2 完成,但 Transaction2 在等待 Transaction1 完成。

系统将检测到此死锁,并选择其中一个涉及的事务作为“牺牲品”。 然后,它将发出此错误消息,回滚该牺牲品的事务。 有关详细信息,请参阅 死锁。

用户操作

在大多数情况下,死锁是与应用程序相关的问题,需要应用程序开发人员进行代码更改。 收到错误 1205 时,一种方法是再次执行查询。 有关如何重试 – 处理死锁并重新执行查询的示例,请参阅此博客: 面向开发人员的死锁模拟器应用:如何在应用中处理 SQL 死锁问题

您还可以修订应用程序以避免死锁。 可以重试被选作牺牲品的事务,而且很可能成功,具体取决于同时执行的操作。

为防止或避免出现死锁,请考虑让所有的事务按相同顺序(先访问 Table1,然后访问 Table2)访问行 。 这样,虽然可能会出现阻止,但可避免出现死锁。

有关详细信息,请参阅 处理死锁 和 最小化死锁。

--结束END--

本文标题: SQLServer 错误 1205 事务(进程 ID %d)与另一个进程被死锁在 %.*ls 资源上,并且已被选作死锁牺牲品。 重新运行该事务。 故障 处理 修复 支持远程

本文链接: https://lsjlt.com/news/530093.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作