`
a3mao
  • 浏览: 561806 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Sqlserver2000数据库死锁原因分析及解决办法

    博客分类:
  • Work
阅读更多
同事的程序中,经常发生的情况是:在程序运行过程中,突然无缘无故的停住了,没有在继续运行下去。后来经过调试发现是因为数据库发生了死锁。对于数据库的死锁,不是很明白,google了下,查到一些资料。
地址:http://www.cnblogs.com/xzq686/archive/2008/04/24/1168784.html

表现一:
    一个用户A 访问表A(锁住了表A),然后又访问表B
    另一个用户B 访问表B(锁住了表B),然后企图访问表A
    这时用户A由于用户B已经锁住表B,它必须等待用户B释放表B,才能继续,好了他老人家就只好老老实实在这等了
    同样用户B要等用户A释放表A才能继续这就死锁了
解决方法:
    这种死锁是由于你的程序的BUG产生的,除了调整你的程序的逻辑别无他法
    仔细分析你程序的逻辑,
    1:尽量避免同时锁定两个资源
    2: 必须同时锁定两个资源时,要保证在任何时刻都应该按照相同的顺序来锁定资源.
表现二:
    用户A读一条纪录,然后修改该条纪录
    这是用户B修改该条纪录
    这里用户A的事务里锁的性质由共享锁企图上升到独占锁(for update),而用户B里的独占锁由于A有共享锁存在所以必须等A释
放掉共享锁,而A由于B的独占锁而无法上升的独占锁也就不可能释放共享锁,于是出现了死锁。
    这种死锁比较隐蔽,但其实在稍大点的项目中经常发生。
解决方法:
    让用户A的事务(即先读后写类型的操作),在select 时就是用Update lock
    语法如下:
    select * from table1 with(updlock) where ....

如果真的table被锁住了,可以通过下面的方法来解锁:
Sql server企业管理器->对应的数据库->管理->当前活动->锁/进程ID
将对应的被锁住的进程关闭。
还有一种方法,就是在你不知道究竟是哪张表被锁,由何种原因被锁,可以重新启动数据库来解决,但不保证下次又被锁住,因为还没有找到问题的根本原因。

要避免锁表,在操作数据库最好不要用独占方式。
分享到:
评论

相关推荐

    SQL Server死锁产生的原因及解决办法

    9. **监控和日志记录**:通过SQL Server的系统日志或专门的工具监控死锁事件,记录死锁信息,以便分析死锁模式并针对性地调整应用程序或数据库配置。 总的来说,解决SQL Server中的死锁问题需要综合考虑数据库设计...

    HIS系统SQL Server数据库死锁问题的分析与解决.pdf

    HIS系统SQL Server数据库死锁问题的分析与解决 SQL Server数据库是HIS系统中非常重要的一部分,负责存储和管理大量的医疗数据。然而,在实际应用中,SQL Server数据库可能会出现死锁问题,导致系统性能下降, thậm...

    查询SQL server数据库死锁存储过程

    标题与描述均指出本篇讨论的主题是“查询SQL Server数据库死锁存储过程”。这表明文章旨在介绍一个用于检测SQL Server环境中发生的死锁现象的自定义存储过程。 #### 标签解读 标签“SQL死锁”进一步强调了本文将...

    SQL Server 2000数据库系统管理与维护1-42百度网盘地址

    根据提供的文件信息,我们可以推断出这是一份关于SQL Server 2000数据库系统管理与维护的学习资料,包括了第1至42节的内容。接下来,我们将详细地阐述SQL Server 2000数据库系统管理与维护的核心知识点。 ### SQL ...

    通过SQL Server Profiler来监视分析死锁

    在SQL Server数据库管理中,死锁是一个常见的性能问题,它发生在两个或多个事务相互等待对方释放资源时。本文将深入探讨如何使用SQL Server Profiler工具来监视和分析死锁,以便更好地理解和解决这类问题。 首先,...

    sql数据库死锁查询工具

    本文将深入探讨“sql数据库死锁查询工具”及其在解决数据库死锁和阻塞过程中的作用。 **1. SQL死锁** SQL死锁是指两个或多个事务在执行过程中,因争夺资源而造成的一种相互等待的现象,若无外力干涉,它们都将无法...

    SQL Server 2000数据库开发从零开始

    在IT领域,数据库是至关重要的组成部分,而SQL Server 2000作为一款经典的关系型数据库管理系统,由Microsoft公司推出,被广泛应用于企业级数据存储和管理。本教程"SQL Server 2000数据库开发从零开始"旨在帮助初学...

    分析SQL Server 数据库中的死锁

    在IT领域,尤其是在数据库管理与优化中,理解并解决SQL Server数据库中的死锁问题是一项至关重要...通过以上方法和技术,可以有效地检测、分析和解决SQL Server数据库中的死锁问题,从而保障数据库系统的稳定性和性能。

    浅析SQL SERVER死锁产生的原因及解决.pdf

    在探讨SQL Server数据库中死锁产生的原因及其解决方法之前,首先要了解死锁的基本概念。死锁是指在多线程系统中,两个或多个线程之间形成了循环依赖关系,导致它们都在等待对方释放资源,从而都无法继续执行下去的一...

    SQL Server2000数据库应用教程(21世纪高等学校计算机规划教材)

    SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它在企业级数据存储、管理和分析方面具有广泛的应用。本书深入浅出地讲解了SQL Server 2000的核心概念、功能和操作技巧,适合初学者和有一定基础的学习者...

    SQL Server 2000数据库应用教程

    《SQL Server 2000 数据库应用教程》是一份专为学习和理解SQL Server 2000设计的教学资料,通常以PPT形式呈现,旨在帮助用户掌握这个经典数据库管理系统的基本概念、功能以及实际应用。SQL Server 2000是微软公司...

    SQLServer排查死锁

    在处理SQL Server数据库中的死锁问题时,一个非常实用的工具就是SQL Server Profiler。它可以帮助我们捕捉到数据库运行过程中的各种事件,并通过这些事件分析问题发生的根源。下面我们将详细介绍如何使用SQL Server ...

    SQL Server死锁的解除方法

    因此,解决SQL Server死锁是非常重要的。 SQL Server死锁的查询方法有多种,下面列举了几种常见的方法: 1. 使用exec master..xp_lockinfo 0, 0命令来查询死锁的进程信息。 2. 使用exec master..xp_lockinfo 1, 0...

    SQLServer2016数据库管理与开发项目教程(微课版)-实训课件.rar

    《SQLServer2016数据库管理与开发项目教程(微课版)》是一份全面介绍SQL Server 2016数据库管理系统的学习资源,主要针对数据库管理和开发人员进行深入讲解。这个压缩包包含了丰富的实训课件,旨在帮助学习者通过...

    SQL Server 2000数据库程序设计

    以上知识点涵盖了SQL Server 2000数据库程序设计中的一些核心概念和技术,包括数据打包与传输、死锁优先级设置、索引调整与性能优化、唯一订单号生成、数据库设计优化等方面。这些知识点对于理解和掌握SQL Server ...

    sql server 2000数据库实验指导书

    SQL Server 2000是微软公司推出的一款关系型数据库管理系统,它是基于标准的SQL(结构化查询语言)并提供了一整套完善的数据存储、管理和分析解决方案。在2000版本中,SQL Server引入了诸多新特性,如改进的性能、...

    sqlserver如何快速查询死锁语句

    在SQL Server数据库管理系统中,死锁是一个常见的性能问题,它发生在两个或多个事务相互等待对方释放资源,导致它们都无法继续执行。死锁不仅影响数据库的正常运行,还可能导致数据一致性问题。本文将详细介绍如何在...

    SQLServer2016数据库原理及应用(微课版)-拓展数据库及文档.rar

    《SQLServer2016数据库原理及应用》是一门深入探讨SQL Server 2016这一强大数据库管理系统的基础与高级特性的课程。本课程重点在于理解数据库的基本概念、设计原则以及在实际工作中的应用,同时涵盖了SQL Server ...

    sqlserver并发分析及解决办法

    ### SQL Server 并发分析及解决办法 #### 一、并发问题概述 在现代数据库管理系统中,尤其是在SQL Server这样的企业级数据库系统中,并发管理是一个非常关键的话题。并发指的是多个事务或查询同时运行的情况,这...

Global site tag (gtag.js) - Google Analytics