一个SQL Server 2008 R2 死锁的问题解决

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个SQL Server 2008 R2 死锁的问题解决相关的知识,希望对你有一定的参考价值。

问题场景:在客户那碰到一个操作卡死的现象

问题解决:

1、如何挂钩是死锁问题:通过代码跟踪,发现是指执行一个SQL语句超时,因此猜想可能是表锁住了

2、如果确认是思索问题:通过SQL发现死锁,以下是相关的SQL

 select request_session_id SPID,OBJECT_NAME(resource_associated_entity_id) TABLENAME from sys.dm_tran_locks where resource_type=‘OBJECT‘
上面这个SQL是查询当前数据库中有哪些死锁, SPID 为进程ID ,TABLENAME 为表名
PS:百度的时候有看到用SQL跟踪器(SQL SERVER Profiler)可以跟踪出死锁

DBCC INPUTBUFFER(SPID)
根据进程ID找到对应的SQL,有了SQL就能确认代码位置了
 
 
3、解决方式:更改数据库事务隔离级别
alter database ng0001 set read_committed_snapshot on with rollback immediate
 
4、总结:这次问题由于比较急加上是晚上加班,所以没有具体查看锁的类别和原来数据库的事务隔离级别,对SQL Server锁和事务隔离级别这2个知识点还需要多加了解

以上是关于一个SQL Server 2008 R2 死锁的问题解决的主要内容,如果未能解决你的问题,请参考以下文章

Webservice 在新的 SQL Server 2014 实例上出现大量死锁

数据库SQL server 2008 R2和SQL server 2008 能一起安装吗?为啥安装完只剩SQL server 2008 R2一个了?

sql server 2008 r2 密钥

windows server2012 r2能安装sqlserver2008 R2吗

windows 2012 r2怎么安装sql server 2008 r2

跪求SQL Server 2008 R2 Standard (64