日期:2014-05-17  浏览次数:20522 次

如何看到进程的具体内容?
某表老是被锁,我想知道到底是在哪里被锁的。通过SELECT request_session_id spid,OBJECT_NAME(resource_associated_entity_id)tableName 
FROM sys.dm_tran_locks 
WHERE resource_type='OBJECT ' 
可以查得对应的进程ID,但是,这个进程究竟是在干嘛,是在执行哪条语句,这怎么才晓得?
进程

------解决方案--------------------
DBCC INPUTBUFFER(SPID)
------解决方案--------------------
这个进程id,准确的是说是会话id。

sql server在运行的时候你可以在任务管理器中看到进程:sqlservr.exe,
当你登录到sql server后,sql server会给你分配一个线程,用来执行发的sql命令和语句,而这个会话的id,就是spid。

可以通过下面的命令来查询语句:



--1.方法1
DBCC INPUTBUFFER(SPID)


--2.方法2
select c.session_id as spid,
       
       t.text as '执行的sql语句'
from sys.dm_exec_connections c
cross apply sys.dm_exec_sql_text(c.most_recent_sql_handle) t
where c.session_id = spid