方法一
--查看sqlserver被锁的表:select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type='OBJECT'
--解锁:@spid为锁表进程declare @spid int Set @spid = 66 declare @sql varchar(1000)set @sql='kill '+cast(@spid as varchar)exec(@sql)
方法二
---------查看数据库是否堵塞-----------select * from sys.sysprocesses where blocked<>0
---------根据id查找对应的sql进程-------dbcc inputbuffer(110)
---------查看数据库进程-----------SELECTSPID = er.session_id,Status = ses.status,[Login] = ses.login_name,Host = ses.host_name,BlkBy = er.blocking_session_id,DBName = DB_Name(er.database_id),CommandType = er.command,SQLStatement = st.text,ObjectName = OBJECT_NAME(st.objectid),ElapsedMS = er.total_elapsed_time,CPUTime = er.cpu_time,IOReads = er.logical_reads + er.reads,IOWrites = er.writes,LastWaitType = er.last_wait_type,StartTime = er.start_time,Protocol = con.net_transport,ConnectionWrites = con.num_writes,ConnectionReads = con.num_reads,ClientAddress = con.client_net_address,Authentication = con.auth_schemeFROM sys.dm_exec_requests erOUTER APPLY sys.dm_exec_sql_text(er.sql_handle) stLEFT JOIN sys.dm_exec_sessions sesON ses.session_id = er.session_idLEFT JOIN sys.dm_exec_connections conON con.session_id = ses.session_idWHERE er.session_id > 50ORDER BYer.blocking_session_id DESC,er.session_id