Sqlserver数据库死锁查询
|
admin
2026年10月17日 12:52
本文热度 202
|
1、查看被锁的表SELECT request_session_id spid , OBJECT_NAME(resource_associated_entity_id) tableNameFROM sys.dm_tran_locksWHERE resource_type = 'OBJECT';
2、解锁DECLARE @spid INT; SET @spid = 119; DECLARE @sql VARCHAR(1000);SET @sql = 'kill ' + CAST(@spid AS VARCHAR);EXEC(@sql);
SELECT TOP 100 total_worker_time/execution_count AS avg_cpu_cost, plan_handle, execution_count, (SELECT SUBSTRING(text, statement_start_offset/2 + 1, (CASE WHEN statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(max), text)) * 2 ELSE statement_end_offset END - statement_start_offset)/2) FROM sys.dm_exec_sql_text(sql_handle)) AS query_textFROM sys.dm_exec_query_statsORDER BY [avg_cpu_cost] DESC
SELECT TOP 100total_worker_time,max_worker_time, total_worker_time/execution_count AS avg_cpu_cost, execution_count,last_execution_time, (SELECT SUBSTRING(text, statement_start_offset/2 + 1, (CASE WHEN statement_end_offset = -1 THEN LEN(CONVERT(nvarchar(max), text)) * 2 ELSE statement_end_offset END - statement_start_offset)/2) FROM sys.dm_exec_sql_text(sql_handle)) AS query_text,plan_handleFROM sys.dm_exec_query_statsORDER BY total_worker_time DESC
select * from sys.dm_exec_query_plan(0x06000A006C13972E40013B3F010000000000000000000000)
SELECT dbid,spid,cpu,physical_io,memusage,login_time,last_batch,status,blocked FROM [Master].[dbo].[SYSPROCESSES] WHERE [DBID] IN (SELECT [DBID]FROM [Master].[dbo].[SYSDATABASES] WHERE NAME='CRM_DB')
SELECT *FROM [Master].[dbo].[SYSDATABASES]
sp_who active
dbcc inputbuffer(129)
kill 92
sp_lock select * from sys.objects where object_id = 293576084
SELECT * FROM sys.syslockinfo
SELECT * FROM sys.sysprocesses
SELECT cpu_count,scheduler_count FROM sys.dm_os_sys_info SELECT max_workers_count FROM sys.dm_os_sys_info
SELECTscheduler_address,scheduler_id,cpu_id,status,current_tasks_count,current_workers_count,active_workers_countFROM sys.dm_os_schedulers
SELECT * FROM sys.[sysprocesses] WHERE [spid]>50 SELECT COUNT(*) FROM [sys].[dm_exec_sessions] WHERE [session_id]>50
SELECT TOP 10[session_id],[request_id],[start_time] AS '开始时间',[status] AS '状态',[command] AS '命令',dest.[text] AS 'sql语句', DB_NAME([database_id]) AS '数据库名',[blocking_session_id] AS '正在阻塞其他会话的会话ID',[wait_type] AS '等待资源类型',[wait_time] AS '等待时间',[wait_resource] AS '等待的资源',[reads] AS '物理读次数',[writes] AS '写次数',[logical_reads] AS '逻辑读次数',[row_count] AS '返回结果行数'FROM sys.[dm_exec_requests] AS der CROSS APPLY sys.[dm_exec_sql_text](der.[sql_handle]) AS dest WHERE DB_NAME(der.[database_id])='CRM_DB' ORDER BY [cpu_time] DESC
SELECT TOP 10 [session_id], [request_id], [start_time] AS '开始时间', [status] AS '状态', [command] AS '命令', dest.[text] AS 'sql语句', DB_NAME([database_id]) AS '数据库名', [blocking_session_id] AS '正在阻塞其他会话的会话ID', der.[wait_type] AS '等待资源类型', [wait_time] AS '等待时间', [wait_resource] AS '等待的资源', [dows].[waiting_tasks_count] AS '当前正在进行等待的任务数', [reads] AS '物理读次数', [writes] AS '写次数', [logical_reads] AS '逻辑读次数', [row_count] AS '返回结果行数' FROM sys.[dm_exec_requests] AS der INNER JOIN [sys].[dm_os_wait_stats] AS dows ON der.[wait_type]=[dows].[wait_type] CROSS APPLY sys.[dm_exec_sql_text](der.[sql_handle]) AS dest ORDER BY [cpu_time] DESC
SELECT DatabaseName = DB_NAME(database_id) ,[Number Indexes Missing] = count(*) FROM sys.dm_db_missing_index_detailsGROUP BY DB_NAME(database_id)ORDER BY 2 DESC;
SELECT TOP 100 [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0) , avg_user_impact , TableName = statement , [EqualityUsage] = equality_columns , [InequalityUsage] = inequality_columns , [Include Cloumns] = included_columnsFROM sys.dm_db_missing_index_groups g INNER JOIN sys.dm_db_missing_index_group_stats s ON s.group_handle = g.index_group_handle INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handleORDER BY [Total Cost] DESC;
SELECT i.name indexname,user_seeks,user_scans,last_user_seek,last_user_scanFROM sys.dm_db_index_usage_stats sINNER JOIN sys.indexes i ONs.object_id = i.object_id ANDs.index_id = i.index_idWHERE database_id = db_id('CRM_DB')
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type='OBJECT' and OBJECT_NAME(resource_associated_entity_id)='CopyrightRecord'
select * from sys.dm_tran_locks
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName from sys.dm_tran_locks where resource_type='OBJECT'
declare @spid int Set @spid = 168 declare @sql varchar(1000)set @sql='kill '+cast(@spid as varchar)exec(@sql)
use mastergodeclare @spid int,@bl int,@intTransactionCountOnEntry int, @intRowcount int,@intCountProperties int, @intCounter intcreate table #tmp_lock_who (id int identity(1,1),spid smallint,bl smallint)insert into #tmp_lock_who(spid,bl) select 0 ,blockedfrom (select * from sysprocesses where blocked>0 ) awhere not exists(select * from (select * from sysprocesses where blocked>0 ) bwhere a.blocked=spid)union select spid,blocked from sysprocesses where blocked>0select @intCountProperties = Count(*),@intCounter = 1 from #tmp_lock_whoif @intCountProperties=0select N'现在没有阻塞和死锁信息' as messagewhile @intCounter <= @intCountPropertiesbeginselect @spid = spid,@bl = bl from #tmp_lock_who where Id = @intCounterbeginif @spid =0select N'引起数据库死锁的是: '+ CAST(@bl AS VARCHAR(10)) + N'进程号,其执行的SQL语法如下'elseselect N'进程号SPID:'+ CAST(@spid AS VARCHAR(10))+ N'被' + N'进程号SPID:'+ CAST(@bl AS VARCHAR(10)) +N'阻塞,其当前进程执行的SQL语法如下'DBCC INPUTBUFFER (@bl )endset @intCounter = @intCounter + 1enddrop table #tmp_lock_who
该文章在 2026/10/17 12:54:36 编辑过
|
|