SQL server 数据连接池使用情况检测

Posted OwnSail

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL server 数据连接池使用情况检测相关的知识,希望对你有一定的参考价值。

1、依据HOST_NAME请求session_id 查询

select DB_NAME(database_id) dbname,login_name,t1.session_id,t1.request_id,t2.status,t1.start_time, host_name
from sys.dm_exec_requests t1 inner join sys.dm_exec_sessions t2 on t1.session_id=t2.session_id where host_name=\'ZHANGSHULEI-\'

检索结果:

2、依据session_id查询数据连接情况、状态

Select sql_handle,* from sys.dm_exec_requests where session_id=57

检索结果:

参数详解:

列名数据类型说明
session_id smallint 与此请求相关的会话的 ID。不可为空值。
request_id int 请求的 ID。在会话的上下文中是唯一的。不可为空值。
start_time datetime 计划运行请求的时间。不可为空值。
status nvarchar(60) 请求的状态。可能的值包括:
  • 后台。请求是后台线程,例如资源监视器或死锁监视器。
  • 正在运行。请求正在运行。
  • 可运行。请求正在运行,由于仲裁不足,因此要临时进行妥善安排。
  • 睡眠。没有要做的工作。
  • 挂起。请求正在等待工作线程选取。
  • 已挂起。请求正在等待某个事件。
不可为空值。
command nvarchar(32) 标识正在处理的命令的类型。常用命令类型包括:
  • SELECT 
  • INSERT 
  • UPDATE 
  • DELETE 
  • BACKUP LOG 
  • BACKUP DB 
  • DBCC 
  • WAITFOR 
通过结合使用 sys.dm_exec_sql_text 动态管理函数和请求的相应 sql_handle,可以检索该请求的文本。内部系统进程将基于它们所执行的任务类型来设置该命令。这些任务可以包括:
  • LOCK MONITOR
  • CHECKPOINTLAZY
  • WRITER
不可为空值。
sql_handle varbinary(64) 请求的 SQL 语句句柄。该句柄可用于通过sys.dm_exec_sql_text 动态管理函数检索实际语句文本。不可为空值。
statement_start_offset int 执行批处理或存储过程中的执行语句的开始字符位置。可以与statement_end_offsetsys.dm_exec_sql_text 动态管理函数和 sql_handle 一起使用,为请求检索正在执行的语句。可为空值。
statement_end_offset int 执行批处理或存储过程中正在执行的语句的结束字符位置。可以与statement_start_offsetsys.dm_exec_sql_text 动态管理函数和 sql_handle 一起使用,为请求检索正在执行的语句。可为空值。
plan_handle varbinary(64) 请求的查询计划句柄。若要查看查询计划,请结合使用sys.dm_exec_query_plan 动态管理函数。若要查询计划缓存,请使用 sys.dm_exec_cached_plans 动态管理视图。若要查看计划属性,请使用 sys.dm_exec_plan_attributes 函数。可为空值。
database_id smallint 正在运行请求的数据库的 ID。有关详细的数据库信息,请查询sys.databases 目录视图;或者,若要获得数据库名称,请使用db_name() 内部函数。不可为空值。
user_id int 正在运行请求的用户 ID。有关详细的用户信息,请查询sys.database_principals 目录视图。不可为空值。
connection_id uniqueidentifier 请求到达时所采用的连接的 ID。有关物理或逻辑连接的详细信息,请查询 sys.dm_exec_connections 动态管理视图。可为空值。
blocking_session_id smallint 正在阻塞请求的会话的 ID。如果此列为 0,则表示请求未被阻塞,或者锁定会话的信息不可用或无法进行标识。 -2 = 阻塞资源由孤立的分布式事务拥有。 -3 = 阻塞资源由延迟的恢复事务拥有。 -4 = 由于内部闩锁状态转换而无法确定阻塞闩锁所有者的会话 ID。
wait_type nvarchar(60) 如果请求被阻塞,则此列返回等待类型。可为空值。
wait_time int 如果请求被阻塞,则此列返回当前等待的持续时间(毫秒)。不可为空值。
last_wait_type nvarchar(64) 如果此请求先前已经阻塞,则此列返回上次等待的类型。不可为空值。
wait_resource nvarchar(512) 如果请求被阻塞,则此列返回正在等待请求的资源。不可为空值。
open_transaction_count int 为此请求打开的事务数。不可为空值。
open_resultset_count int 为此请求打开的结果集的个数。不可为空值。
transaction_id bigint 在其中执行此请求的事务的 ID。对于 SQL Server 实例,该 ID 是唯一的。用来查询sys.dm_tran_active_transactionssys.dm_tran_locks或 sys.dm_tran_database_transactions 动态管理视图。不可为空值。
context_info varbinary(128) 请求的 SET CONTEXT_INFO 语句的值。可为空值。
percent_complete real 为某些操作(包括回滚)完成的工作的百分比。此操作不提供查询的进度数据。
不可为空值。
estimated_completion_time bigint 仅供内部使用。不可为空值。
cpu_time int 请求所使用的 CPU 时间(毫秒)。不可为空值。
total_elapsed_time int 请求到达后经过的总时间(毫秒)。不可为空值。
scheduler_id int 正在计划此请求的计划程序的 ID。有关此计划程序的详细信息,请查询 sys.dm_os_schedulers 动态管理视图。不可为空值。
task_address varbinary(8) 分配给与此请求关联的任务的内存地址。有关此任务的详细信息,请查询 sys.dm_os_tasks 动态管理视图。可为空值。
reads bigint 此请求执行的读取数。不可为空值。
Writes bigint 此请求执行的写入数。不可为空值。
logical_reads bigint 此请求已经执行的逻辑读取数。不可为空值。
text_size int 此请求的 TEXTSIZE 设置。不可为空值。
language nvarchar(256) 该请求的语言设置。可为空值。
date_format nvarchar(3) 该请求的 DATEFORMAT 设置。可为空值。
date_first smallint 该请求的 DATEFIRST 设置。不可为空值。
quoted_identifier bit 1 = QUOTED_IDENTIFIER 对于该请求是 ON。否则为 0。 不可为空值。
arithabort bit 1 = ARITHABORT 设置对于该请求是 ON。否则为 0。 不可为空值。
ansi_null_dflt_on bit 1 = ANSI_NULL_DFLT_ON 设置对于该请求是 ON。否则为 0。 不可为空值。
ansi_defaults bit 1 = ANSI_DEFAULTS 设置对于该请求是 ON。否则为 0。 不可为空值。
ansi_warnings bit 1 = ANSI_WARNINGS 设置对于该请求是 ON。否则为 0。 不可为空值。
ansi_padding bit 1 = ANSI_PADDING 设置对于该请求是 ON。 否则为 0。 不可为空值。
ansi_nulls bit 1 = ANSI_NULLS 设置对于该请求是 ON。否则为 0。 不可为空值。
concat_null_yields_null bit 1 = CONCAT_NULL_YIELDS_NULL 设置对于该请求是 ON。否则为 0。 不可为空值。
transaction_isolation_level smallint 此请求的事务隔离级别。可能的值包括: 0 = 未指定 1 = 未提交读取 2 = 已提交读取 3 = 可重复 4 = 可序列化 5 = 快照 不可为空值。
lock_timeout int 此请求的锁超时时间(毫秒)。不可为空值。
deadlock_priority int 请求的 DEADLOCK_PRIORITY 设置。不可为空值。
row_count bigint 已由此请求返回到客户端的行数。不可为空值。
prev_error int 在执行请求期间发生的最后一个错误。不可为空值。
nest_level int 正在对该请求执行的代码的嵌套级别。不可为空值。
granted_query_memory int 为执行该请求的查询而分配的页数。不可为空值。
executing_managed_code bit 指示此请求是否正在执行公共语言运行时对象,例如例程、类型和触发器。只要公共语言运行时对象在堆栈中,就会设置此值,甚至在从公共语言运行时运行 Transact-SQL 时,也会设置。不可为空值。

 

3、查找所有当前阻塞的请求

SELECT session_id ,status ,blocking_session_id
    ,wait_type ,wait_time ,wait_resource 
    ,transaction_id 
FROM sys.dm_exec_requests 
WHERE status = N\'suspended\';
GO

 

以上是关于SQL server 数据连接池使用情况检测的主要内容,如果未能解决你的问题,请参考以下文章

SQL_Server2008数据连接池

SQL SERVER连接池

tomcat 6..0.20 连接池配置 SQL server 2000数据库

java sql数据连接池的问题?

Sql Server 连接池

sqlserver数据库重启后 程序必须重启的问题(不重启提示:该连接已关闭)?