【问题标题】:SQL Server BlockingSQL Server 阻塞
【发布时间】:2017-09-30 16:12:04
【问题描述】:

我的生产 SQL Server 2008 R2 从早上 4:00 到凌晨 5:00 出现故障。

我使用 grafana 检查了 SQL Server 性能,发现阻塞发生在凌晨 4:00 到 5:00 之间。

凌晨 5 点后运行正常。我检查了正在运行的作业,备份了夜间运行的所有内容。但所有这些都发生在凌晨 4 点之前。

我创建了一个要运行的 SQL Server Profiler 跟踪作业,但它正在创建多个跟踪文件,如果我这样做,它将关闭生产服务器。

在 SQL Server 2008 R2 中,我找不到管理下的扩展事件。我怎么知道凌晨 4 点到 5 点之间发生了什么?

【问题讨论】:

  • 这真的与 programming 没有任何关系(this site all about),但是与数据库管理 - 所以这里是题外话,属于dba.stackexchange.com - 投票移动。
  • 同时检查 Windows 事件日志。当您的 SQL Server 关闭时,不会记录任何事件。

标签: sql-server sql-server-2008-r2 profiler blocking trace


【解决方案1】:

我怎么知道凌晨 4 点到 5 点之间发生了什么?

扩展事件阻塞进程在 2008 R2 中不可用..因此您可以创建一些如下所示的自定义脚本并通过 sql 代理每 5 分钟运行一次并插入到某个表中

select rq.session_id,rq.status,rq.command,rq.wait_type,rq.last_wait_type,rq.wait_time,rq.wait_resource,
rq.blocking_session_id,
blocked.text  as 'blocked',
blocking.text as 'blockedby'
 from
sys.dm_exec_requests rq
join
sys.dm_exec_connections cn
on cn.session_id=rq.blocking_session_id
cross apply
sys.dm_exec_sql_text(rq.sql_handle) blocked
cross apply
sys.dm_exec_sql_text(cn.most_recent_sql_handle) blocking

参考资料:
http://www.chilledsql.com/welcome/tip_category_dmvqueries/tip_detail_dmvqueries_getblockingprocesses

【讨论】:

    猜你喜欢
    • 2017-12-28
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-21
    • 1970-01-01
    • 2017-04-25
    • 2014-11-15
    相关资源
    最近更新 更多