如何看到进程的具体内容?
某表老是被锁,我想知道到底是在哪里被锁的。通过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