WITH ProcessCTE(blocked) AS(SELECT spid FROM sys.sysprocesses WHERE cpu>500)SELECT distinct a.* FROM ( SELECT TEXT,AA.* FROM sys.sysprocesses AACROSS APPLY sys.dm_exec_sql_text(AA.sql_handle)) a JOIN ProcessCTE bucte WITH(NOLOCK)ON bucte.blocked=a.spid --where loginame = "TCScenery" ORDER BY a.CPU二、阻塞问题
WITH ProcessCTE(blocked) AS(SELECT blocked FROM sys.sysprocesses WHERE blocked>0unionSELECT blocked FROM sys.sysprocesses WHERE blocked>0)SELECT distinct a.* FROM (SELECT TEXT,AA.* FROM sys.sysprocesses AACROSS APPLY sys.dm_exec_sql_text(AA.sql_handle)) a JOIN ProcessCTE bucte WITH(NOLOCK)ON bucte.blocked=a.spid ORDER BY a.blocked2、使用系统自带的存储过程
USE master;GOEXEC sp_who;GOB.列出特定用户的进程
USE master;GOEXEC sp_who "janetl";GOC.显示所有活动进程
USE master;GOEXEC sp_who "active";GOD.显示会话 ID 标识的特定进程
USE master;GOEXEC sp_who "10" --specifies the process_id;GOsp_lock用法说明
列名 | 数据类型 | 说明 |
spid | smallint | 请求锁的进程的数据库引擎会话 ID 号。 |
dbid | smallint | 保留锁的数据库的标识号。 可以使用 DB_NAME() 函数来标识数据库。 |
ObjId | int | 持有锁的对象的标识号。 可以在相关数据库中使用 OBJECT_NAME() 函数来标识对象。 值为 99 时是一种特殊情况,表示用于记录数据库中页分配的其中一个系统页的锁。 |
IndId | smallint | 持有锁的索引的标识号。 |
类型 | nchar(4) | 锁的类型: |
RID = 表中单个行的锁,由行标识符 (RID) 标识。 | ||
KEY = 索引内保护可串行事务中一系列键的锁。 | ||
PAG = 数据页或索引页的锁。 | ||
EXT = 对某区的锁。 | ||
TAB = 整个表(包括所有数据和索引)的锁。 | ||
DB = 数据库的锁。 | ||
FIL = 数据库文件的锁。 | ||
APP = 指定的应用程序资源的锁。 | ||
MD = 元数据或目录信息的锁。 | ||
HBT = 堆或 B 树索引的锁。 在 SQL Server 中此信息不完整。 | ||
AU = 分配单元的锁。 在 SQL Server 中此信息不完整。 | ||
Resource | nchar(32) | 标识被锁定资源的值。 值的格式取决于 Type 列标识的资源类型: |
Type 值:Resource 值 | ||
RID:格式为 fileid:pagenumber:rid 的标识符,其中 fileid 标识包含页的文件,pagenumber 标识包含行的页,rid 标识页上的特定行。 fileid 与sys.database_files 目录视图中的 file_id 列相匹配。 | ||
KEY:数据库引擎内部使用的十六进制数。 | ||
PAG:格式为 fileid:pagenumber 的数字,其中 fileid 标识包含页的文件,pagenumber 标识页。 | ||
EXT:标识区中的第一页的数字。 该数字的格式为 fileid:pagenumber。 | ||
TAB:没有提供信息,因为已在 ObjId 列中标识了表。 | ||
DB:没有提供信息,因为已在 dbid 列中标识了数据库。 | ||
FIL:文件的标识符,与 sys.database_files 目录视图中的 file_id 列相匹配。 | ||
APP:被锁定的应用程序资源的唯一标识符。 格式为 DbPrincipleId:<资源字符串的前 2 个到 16 个字符><哈希运算值>。 | ||
MD:随资源类型而变化。 有关详细信息,请参阅 sys.dm_tran_locks (Transact-SQL) 中 resource_description 列的说明。 | ||
HBT:没有提供任何信息。 请改用 sys.dm_tran_locks 动态管理视图。 | ||
AU:没有提供任何信息。 请改用 sys.dm_tran_locks 动态管理视图。 | ||
模式 | nvarchar(8) | 所请求的锁模式。 可以是: |
NULL = 不授予对资源的访问权限。 用作占位符。 | ||
Sch-S = 架构稳定性。 确保在任何会话持有对架构元素(例如表或索引)的架构稳定性锁时,不删除该架构元素。 | ||
Sch-M = 架构修改。 必须由要更改指定资源架构的任何会话持有。 确保没有其他会话正在引用所指示的对象。 | ||
S = 共享。 授予持有锁的会话对资源的共享访问权限。 | ||
U = 更新。 指示对最终可能更新的资源获取的更新锁。 用于防止一种常见的死锁,这种死锁在多个会话锁定资源以便稍后对资源进行更新时发生。 | ||
X = 排他。 授予持有锁的会话对资源的独占访问权限。 | ||
IS = 意向共享。 指示有意将 S 锁放置在锁层次结构中的某个从属资源上。 | ||
IU = 意向更新。 指示有意将 U 锁放置在锁层次结构中的某个从属资源上。 | ||
IX = 意向排他。 指示有意将 X 锁放置在锁层次结构中的某个从属资源上。 | ||
SIU = 共享意向更新。 指示对有意在锁层次结构中的从属资源上获取更新锁的资源进行共享访问。 | ||
SIX = 共享意向排他。 指示对有意在锁层次结构中的从属资源上获取排他锁的资源进行共享访问。 | ||
UIX = 更新意向排他。 指示对有意在锁层次结构中的从属资源上获取排他锁的资源持有的更新锁。 | ||
BU = 大容量更新。 用于大容量操作。 | ||
RangeS_S = 共享键范围和共享资源锁。 指示可串行范围扫描。 | ||
RangeS_U = 共享键范围和更新资源锁。 指示可串行更新扫描。 | ||
RangeI_N = 插入键范围和 Null 资源锁。 用于在将新键插入索引前测试范围。 | ||
RangeI_S = 键范围转换锁。 由 RangeI_N 和 S 锁的重叠创建。 | ||
RangeI_U = 由 RangeI_N 和 U 锁的重叠创建的键范围转换锁。 | ||
RangeI_X = 由 RangeI_N 和 X 锁的重叠创建的键范围转换锁。 | ||
RangeX_S = 由 RangeI_N 和 RangeS_S 锁的重叠创建的键范围转换锁 。 | ||
RangeX_U = 由 RangeI_N 和 RangeS_U 锁的重叠创建的键范围转换锁。 | ||
RangeX_X = 排他键范围和排他资源锁。 这是在更新范围中的键时使用的转换锁。 | ||
状态 | nvarchar(5) | 锁的请求状态: |
CNVRT:锁正在从另一种模式进行转换,但是转换被另一个持有锁(模式相冲突)的进程阻塞。 | ||
GRANT:已获取锁。 | ||
WAIT:锁被另一个持有锁(模式相冲突)的进程阻塞。 |
列名 | 数据类型 | 描述 |
EventType | nvarchar(30) | 事件类型,例如:RPC、语言或无事件。 |
Parameters | Int | 0 = 文本 |
EventInfo | nvarchar(255) | 对于 RPC 的 EventType,EventInfo 仅包含过程名。对于语言或无事件的 EventType,仅显示事件的头 255 个字符。 |