sql服务器响应慢,KB4338890-修复: "非生成计划程序" 错误和 SQL Server 在 SQL Server 2014、2016和2017中显示不响应...

更多信息

回滚可能需要很长时间(如长时间运行的事务)的原因有多种,例如事务日志文件中的大量 VLFs、速度较慢的 i/o 等。 为了验证本文所述的问题是否是缓慢回退的根本原因,我们建议使用以下技术监视回退操作的进度:

从 sys.dm_exec_requests中,标识其命令设置为 "已终止/回滚" 的 session_id,并确保会话将累积 IO 和 CPU 时间来指示进度。 如果 IO 未更改,则可能表明你遇到了本文中所述的问题。

查询 sys.dm_tran_database_transactions 使用如下查询标识回退的当前状态:

​ ​

选择 getdate ()作为 CurrentTime、database_transaction_next_undo_lsn、database_transaction_begin_lsn、t.transaction_id、database_transaction_begin_time、database_transaction_log_record_count、db_name (t.database_id)

从 sys.dm_tran_database_transactions t

加入 sys.dm_exec_requests s

在 t.transaction_id = s.transaction_id

其中 t.database_id = db_id ('

注意:

在上述查询中,

database_transaction_next_undo_lsn是要撤消的下一条记录的 lsn。 database_transaction_begin_lsn是事务日志中事务的开始记录的 lsn。

database_transaction_next_undo_lsn应减少此查询的每个快照。 当 database_transaction_next_undo_lsn达到 database_transaction_begin_lsn 时,回退将成功完成。

此处的目标是在预先确定的间隔内拍摄上一个查询的几个快照,然后使用该间隔内 database_transaction_next_undo_lsn中处理的 LSNs 的增量,并推断所花费的时间,以便估计 database_transaction_next_undo_lsn达到 database_transaction_begin_lsn所需的时间。

如果回滚在每个快照之间以相当的速率前进,我们建议允许回退自行完成,而无需重新启动 SQL Server 实例。

有关长时间运行的恢复的详细信息,请参阅以下文章:

状态

Microsoft 已确认这是在“适用范围”部分中列出的 Microsoft 产品存在的问题。

参考

了解 Microsoft 用于描述软件更新的 术语。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值