简单解决阻塞方案


select * from master .dbo.sysprocesses where blocked>0---查看阻塞---blocked 指被阻塞或锁定的SPID
go
dbcc inputbuffer(5)--查看具体是那个SQL阻塞5指SPID
go
Sp_lock--- 找出spid=5 --objid 被锁定或阻塞的对象--dbid 被阻塞或锁定的对象所在的DB
go
Select db_name(@dbid)---找到数据库
go
select object_name(@objid)---找到表
go
select @@LOCK_TIMEOUT --  -1 无限期等待 0 发生锁定或阻塞直接抛出错误。
--查看那个进程ID阻塞了哪几个进程ID --session_id被阻塞者、blocking_session_id阻塞者
SELECT blocking_session_id, wait_duration_ms, session_id,* FROM sys.dm_os_waiting_tasks where blocking_session_id is not null

--查看整个数据库的锁定和阻塞详细信息:

SELECT * FROM sys.dm_tran_locks 
EXEC sp_lock

解决方法:
如果是更新,则改为不再实时对tabA表进行update操作,而是每次访问都先insert一条记录到一个中间表中,然后再用一个作业,
每隔几分钟定时更新书目标表中的数据。

你可能感兴趣的:(简单解决阻塞方案)