SQL Server死锁的分析-数据库-编程文档-人才家园--中国人才库
您所在的位置:中国人才库--人才家园--编程文档--数据库
SQL Server死锁的分析
来源: 编辑:duliying 更新日期:2008-6-14 17:02:49 浏览:441 次
SQL 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。代码如下: if exists (select * from dbo.sysobjects
where id = object_id(N‘[dbo].[sp_who_lock]‘)
and OBJECTPROPERTY(id, N‘IsProcedure‘) = 1)
drop procedure [dbo].[sp_who_lock]
GO
/********************************************************
//   创建 : fengyu   邮件 : maggiefengyu@tom.com
//   日期 :2004-04-30
//   修改 : 从http://www.csdn.net/develop/Read_Article.asp?id=26566
//   学习到并改写
//   说明 : 查看数据库里阻塞和死锁情况
********************************************************/
use master
go
create procedure sp_who_lock
as
begin
declare @spid int,@bl int,
@intTransactionCountOnEntry     int,
 第1页/总3页  第一页 上一页 下一页 最后一页     【发表评论】
昵   称:  (不填写则显示为匿名)
标   题:
内   容:
 
免责声明:网友对此资源信息的评论仅代表个人观点,中国人才库有权删除违乱评论信息!
石家庄广通印刷学校