--先找到阻塞的spid
select *
from sys.sysprocesses
where blocked <> 0--用上面的spid查询
select start_time,
       wait_time
from sys.dm_exec_requests
where spid = xxx

解决方案 »

  1.   


    我现在是想用代码把lock或阻塞发生的时间记录下来,若也能记录lock或阻塞结束的时间记录下来最好
      

  2.   


    我现在是想用代码把lock或阻塞发生的时间记录下来,若也能记录lock或阻塞结束的时间记录下来最好这个我觉得用profiler也可以的,然后通过函数从文件中把信息独取出来,不过这种锁信息是很多的,如果记录大量这样的信息,系统的性能会受到很大的影响。
      

  3.   


    我现在是想用代码把lock或阻塞发生的时间记录下来,若也能记录lock或阻塞结束的时间记录下来最好有些迅速加锁、解锁的操作DMV可能记录下来也区分不出来,用sql trace也行
      

  4.   


    我现在是想用代码把lock或阻塞发生的时间记录下来,若也能记录lock或阻塞结束的时间记录下来最好这个我觉得用profiler也可以的,然后通过函数从文件中把信息独取出来,不过这种锁信息是很多的,如果记录大量这样的信息,系统的性能会受到很大的影响。
    请问select start_time,       wait_time,* from sys.dm_exec_requests中的session_ID与select * from sys.sysprocesses 中的spid是一样的意思吗?
    另外下图中的wait_time为什么出现为负数?
      

  5.   


    我现在是想用代码把lock或阻塞发生的时间记录下来,若也能记录lock或阻塞结束的时间记录下来最好这个我觉得用profiler也可以的,然后通过函数从文件中把信息独取出来,不过这种锁信息是很多的,如果记录大量这样的信息,系统的性能会受到很大的影响。
    请问select start_time,       wait_time,* from sys.dm_exec_requests中的session_ID与select * from sys.sysprocesses 中的spid是一样的意思吗?
    另外下图中的wait_time为什么出现为负数?我查了一下资料:wait_time int
    如果请求被阻塞,则此列返回当前等待的持续时间(毫秒)。不可为空值。但是为什么有空值,还真不清楚
      

  6.   


    我现在是想用代码把lock或阻塞发生的时间记录下来,若也能记录lock或阻塞结束的时间记录下来最好有些迅速加锁、解锁的操作DMV可能记录下来也区分不出来,用sql trace也行一直没有用SQL trace,在SQL中只用过profiler与db tuning advsior,请问SQL trace是SQL自带的吗?谢谢
      

  7.   

    Profiler就可以生成sql trace,你可以认为是自带的
      

  8.   

    跟唐诗版主讨论了一下,sys.dm_exec_requests这个DMV是实时的请求,查询执行完毕之后就查不到了,即使你的事务没有提交或者回滚,也是在这个DMV中查不到的,所以用这个来查锁恐怕不好,还不如换sys.sysprocesses