我这个是sql server 2000的呀,是不是没有监控功能呀?是不是我要更换成更高版本的呀?应该换成什么版本呢?
有没有可能不更新sql server版本而直接安装监控工具呢? 实在不行我就只好更新版本了,
SORRY 你没有理解我说的意思,你只需要安装客户端是SQL SERVER 2008 就可以也就是我们俗称的SSMS如果你是利用命令行你可以使用使用SQL Server的系统存储过程sp_who和sp_lock,可以查看当前数据库中的锁情况;进而根据objectID(@objID)(SQL Server 2005)/ object_name(@objID)(Sql Server 2000)可以查看哪个资源被锁,用dbcc ld(@blk),可以查看最后一条发生给SQL Server的Sql语句;
windows 自带的性能监视器 + MsSqlServer的Profiler 监控可能出现问题的时间段,然后分析一下你就知道了
意思是我的服务器是sql server2000,而我在客户端装个sql server 2008 连接服务器就可以分析服务器了是吗?
--查找锁记录 Select distinct spid,blocked,loginame,hostname,open_tran,waittime,lastwaittype,waitresource,last_batch from master..sysprocesses where spid >= 50 and blocked <> 0 order by waittime desc看blocked --看最后提交的语句 dbcc inputbuffer(62)--62为上面查询的blocked 即引起锁的spid
SQL2005以上可用 SQL Server Profiler通過SQL Server Profiler查死鎖信息:啟動SQL Server Profiler——連接實例——事件選取範圍——顯示所有事件
選擇項:
TSQL——SQL:StmtStarting
Locks——Deadlock graph(這是SQL2005新增事件,生成包含死鎖信息的xml值)
——Lock:DeadlockChain 死鎖鏈中的進程產生該事件,可標識死鎖進程的ID並跟蹤操作
——Lock:Deadlock 該事件發生了死鎖
实在不行我就只好更新版本了,
2、sql profiler 建立跟踪,选择你要的 事件,同样将监控数据保存;
3、分析perfmon.msc得到的日志看看sqlserver:locks下的计数器,看看有关锁的信息;
4、根据3的时间和分析结果看看你确定的这个时间段有哪些语句在执行;ps:你最好在perfmon.msc加上cpu memory disk 等监视器对你分析可能有帮助;
Sorry 你还是么有明白,目前SQL SERVER 2008 有新的功能叫ACTIVITY MONITOR目前只兼容到SQL SERVER2005,2000不在支持,从微软的角度SQL SERVER 2000 也不在支持范围之内你可以用命令的方式,当然使用PROFILE 也可以,楼上的说的很好如果你需要更详细的数据那可以使用,但从即时性考虑,ACTIVITY MONITOR 是在死锁瞬间就显示 线程名 连接数据库名连接客户端,等相信信息
那我需要把哪几项可用事件类添加到 跟踪属性 中去呢?
我的目的是想知道那个sql语句造成了死锁,别的信息都不用
在PROFILE 后,你可以选择是将记录保存在数据库成为表,还是承认TRC文件,后请对TYPE中查找LOCK有关的信息
Select distinct spid,blocked,loginame,hostname,open_tran,waittime,lastwaittype,waitresource,last_batch
from master..sysprocesses where spid >= 50
and blocked <> 0
order by waittime desc看blocked
--看最后提交的语句
dbcc inputbuffer(62)--62为上面查询的blocked 即引起锁的spid
请问你提供的那个语句是不是查询临时信息的?如果死锁的时候没有及时查询,被重启了数据库,会不会还能查询到呢?