用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > sqlserver教程

有关于SQL Server数据库死锁的分析

时间:2014-11-30  来源:互联网  作者:佚名

SQL(SQL Server培训 mySQL培训 ) Server数据库(数据库培训 数据库认证 )发生死锁时不会象ORACLE那样自动生成一个跟踪文件.

有时可以在[管理]->[当前活动] 里看到阻塞信息(有时SQL Server企业管理器会因为锁太多而没有响应).

设定跟踪1204:

USE MASTER

DBCC TRACEON (1204,-1)

显示当前启用的所有跟踪标记的状态:

DBCC TRACESTATUS(-1)

取消跟踪1204:

DBCC TRACEOFF (1204,-1)

在设定跟踪1204后,会在数据库的日志文件里显示SQL Server数据库死锁时一些信息,

但那些信息很难看懂,需要对照SQL Server联机丛书仔细来看.

根据PAG锁要找到相关数据库表的方法:

DBCC TRACEON (3604)

DBCC PAGE (db_id,file_id,page_no)

DBCC TRACEOFF (3604)

请参考sqlservercentral.com上更详细的讲解.

从CSDN学到了一个找到死锁原因的方法.

我稍加修改, 去掉了游标操作并增加了一些提示信息,写了一个系统存储过程sp_who_lock.sql.

需要的时候直接调用:

sp_who_lock

就可以查出引起死锁的进程和SQL语句.

SQL Server自带的系统存储过程sp_who和sp_lock也可以用来查找阻塞和死锁, 但没有这里介绍的方法好用.

如果想知道其它tracenum参数的含义,请看www.sqlservercentral.com文章

我们还可以设置锁的超时时间(单位是毫秒), 来缩短死锁可能影响的时间范围:

例如:

use master

seelct @@lock_timeout

set lock_timeout 900000

-- 15分钟

seelct @@lock_timeout

(T114)

来顶一下
返回首页
返回首页
推荐资讯
从零开始学ASP.NET-基础篇第1/7页 从零开始学ASP.NET-基础篇第1/7页第一天 学习目的: 掌握最基本的Label、TextBox、Button控件
ASP.NET入门数据篇 ASP.NET入门数据篇对于网站编程的初学者来说,总是会上网找些源码来看,但久而
相关文章
栏目更新
栏目热门