存储过程执行过程中锁表

leech125 2013-02-06 12:08:58
存储过程执行时,UPDATE table时,这张表被锁没有执行,如何在存储过程中写语句判断这张表是否被锁
...全文
460 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
KevinLiu 2013-02-08
使用sys.dm_tran_locks
  • 打赏
  • 举报
回复
lexsword 2013-02-07
循环执行存储过程,如何更新pParamMember->Value=_variant_t(vStrSQL); 这个vStrSQL的串值
  • 打赏
  • 举报
回复
szm341 2013-02-06
好吧~学习不够呵呵
  • 打赏
  • 举报
回复
kingtiy 2013-02-06

SELECT  request_session_id AS spid ,
        DB_NAME(resource_database_id) AS dbname ,
        CASE WHEN resource_type = 'OBJECT' THEN OBJECT_NAME(resource_associated_entity_id)
             WHEN resource_associated_entity_id = 0 THEN 'n/a'
             ELSE OBJECT_NAME(p.object_id)
        END AS entity_name ,
        resource_type AS resource ,
        request_mode AS mode ,
        request_status AS status
FROM    sys.dm_tran_locks t
        LEFT JOIN sys.partitions p ON p.hobt_id = t.resource_associated_entity_id
WHERE   resource_database_id = DB_ID() AND t.request_mode='X' AND t.request_status='GRANT'
AND OBJECT_ID('表名')=t.resource_associated_entity_id

--判断表上面有没有加上表的排它锁

  • 打赏
  • 举报
回复
szm341 2013-02-06
好像没有直接判断对象上的锁的方法,一般查询阻塞都是用dmv或者系统存储过程 (没见过有直接查表锁的) 再说,存储过程中即便有锁也是发生阻塞等待的,如果不执行除非是死锁, 被数据库kill牺牲掉了 如果是死锁的话可以开启profiler跟踪一下语句,看是哪里的设计不当的
  • 打赏
  • 举报
回复
相关推荐
发帖
应用实例
加入

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2013-02-06 12:08
社区公告
暂无公告