存储过程执行过程中锁表

leech125 2013-02-06 12:08:58
存储过程执行时,UPDATE table时,这张表被锁没有执行,如何在存储过程中写语句判断这张表是否被锁
...全文
711 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
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跟踪一下语句,看是哪里的设计不当的

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧