MSSQL查看数据库进程:一步一步指南(mssql查看数据库进程)

MSSQL查看数据库进程是DBA管理任务中重要环节,利用MSSQL查看数据库进程可以查看每个当前正在运行的任务情况以及进程之间的关系,同时把数据库运行状态给你们一个大致的了解,下面就来看MSSQL如何查看数据库进程:

### 一、执行查询

如果想要查看数据库中当前执行的任务,可能需要执行下面的查询:

SELECT session_id, host_name, program_name, nt_domain, login_name, 
port_address, command, client_interface_name, blocked
FROM sys.dm_exec_sessions

最重要的字段有:

– **session_id**:会话标识符

– **host_name**:操作系统的主机名称

– **program_name**:连接进程的名字

– **login_name**:审计用户的登录名

– **command**:正在运行的命令

– **blocked**:如果前面的会话被阻止,则为1

### 二、使用最新相关系统视图

上面的查询不仅只能查看当前执行任务,也可以检查以前运行的任务。如果想要查看当前活动任务,可以使用 sys.dm_exec_requests:

SELECT session_id, command, start_time, status, percent_complete
FROM sys.dm_exec_requests
WHERE status = 'running'
AND command != 'AWAITING COMMAND'

这条查询将显示正在运行的任务,其中command字段显示了正在运行的具体命令,percent_complete可以表明这个任务的完成率。

### 三、检查进程和锁定

运行上面的查询可以得到任务或者会话的关联,但是还需要查看是否存在被阻止或者锁定的情况:

SELECT blocked_space.resource_type, blocked_space.request_mode, blocked_space.resource_description
FROM sys.dm_tran_locks AS blocked_space
JOIN sys.dm_exec_requests AS blocking_spaces
ON blocking_spaces.session_id = blocked_space.request_session_id

这条查询会返回锁定的行的详细信息,resource_type会提示被锁定的对象的类型,如果锁定的是行,resource_description会显示表名和行ID。

### 四、查看资源消耗

可以使用sys.dm_exec_query_stats 和 sys.dm_exec_procedure_stats 视图,这两个视图会返回每个进程的资源消耗详情:

SELECT q.sql_handle, q.statement_start_offset, q.statement_end_offset, 
SUM (qs.total_elapsed_time) AS total_elapsed_time
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text (qs.sql_handle) AS q
GROUP BY q.sql_handle, q.statement_start_offset, q.statement_end_offset;

这个查询会查询出每个查询的总耗时,可以用来帮助我们发现长时间运行的查询。

总之,MSSQL查看数据库进程的技术可以用来检查数据库的运行状态,能把审计任务给DBA及时掌控,从而保证数据库正常运行。


数据运维技术 » MSSQL查看数据库进程:一步一步指南(mssql查看数据库进程)