我已经讨论了各种确定恢复状态的方法,但是本周我参与了一个围绕回滚的有趣讨论。交易已经运行了14个小时,然后发出了KILL SPID。SPID进入回滚,并发生2天和4小时。

自然的问题是为什么不14小时回滚?

没有一些具体的细节很难说,但如果原来的查询使用了并行工作,那么可能会完成超过14个小时的工作。例如,如果更新与4名工作人员同时运行,则可以完成56个工作小时或2.3天。回滚大多是单线程的,所以可能需要4倍的时间来完成回滚。另外,在执行过程中,预读通常更高效,因为计划是已知的,回滚必须在日志记录中工作,并且可能无法以相同的方式驱动缓冲区读取。

接下来的问题是:我应该重新启动SQL Server服务吗?这会更快吗?

通常情况下,它不会更快,因为您必须从开始事务再次开始恢复,并确定从何处开始修复数据库。这意味着大量的I / O,这次有一个冷藏缓存,可能没有其他访问数据库。

仍然认为恢复/回滚卡住了

如果您真的认为恢复或回滚应该已经完成​​,您可以发出以下T-SQL命令来捕获SQL Server进程的转储并将其提供给Microsoft SQL Server支持以供进一步分析。

dbcc traceon(-1,2546,2551)

dbcc stackdump(1)

dbcc traceoff(-1,2546,2551)

这将在LOG目录中生成一个.mdmp文件。继续允许恢复或回滚继续并与Microsoft SQL Server支持联系以获得进一步的帮助。

大日志文件

您还应该意识到,允许日志文件变大并生成大量的VLF可能会增加恢复时间。

如果正在恢复的数据库中有很多VLF(虚拟日志文件),则预恢复期间发生的发现阶段可能需要很长时间才能完成。DBCC LOGINFO(dbname)返回的行数将确认这是否可能。 在典型的问题情况下,这个查询将在120万个VLFS的困难情况下返回几千个。 即使没有要恢复的事务,也可能发生此问题。最好的解决办法是将日志文件缩小到非常小的值,确认VLF的数量少于100个,然后通过以较大增量扩展(或增长)来重新调整日志的大小。

原文:https://blogs.msdn.microsoft.com/psssql/2008/09/12/sql-server-2000-2005-2008-recoveryrollback-taking-longer-than-expected/

SQL Server(2000,2005,2008):恢复/回滚时间比预期长(译)的更多相关文章

  1. SQL SERVER 2000/2005/2008数据库数据迁移到Oracle 10G细述

    最近参与的一个系统涉及到把SQL Server 2k的数据迁移到Oracle 10G这一非功能需求.特将涉及到相关步骤列举如下供大家参考: 环境及现有资源: 1.OS: Windows 7 Enter ...

  2. sql数据库恢复 文件丢失误删除 误格式化置疑报错修复 数据库置疑修复总结/SQL SERVER 2000/2005/2008/2008R2

    数据库置疑的原因会有多种多样,不同的问题采用的步骤也会有所不同,以下的步骤不能适用所有的情况,但包括了一些基本的步骤. 数据库置疑是指数据库内部处于不一致的状态,很有可能会有数据丢失.我们推荐您从做数 ...

  3. SQL Server 2000/2005 分页SQL — 单条SQL语句

    有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活.先看看单条 SQL ...

  4. sql server 2000/2005递归

    /* 递归查询 塗聚文---SQL Server 2005环境下的实现: */--生成测试数据 create table Dept(ID int,ParentID int,msg varchar(20 ...

  5. SQL语句添加删除修改字段[sql server 2000/2005]

    用SQL语句添加删除修改字段1.增加字段     alter table docdsp    add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME ...

  6. 精心收集整理的SQL Server 2014/2012/2008/2005/2000简体中文企业版下载地址

    经常在网上看到有同学费尽心思的找SQL server数据库各版本的下载地址,看到别人的求助贴就不自觉的想去帮助他们,但是一个一个去帮助又不太现实,毕竟个人精力有限,既然大家有需求,那么笔者就本着乐于分 ...

  7. SQL Server 2000向SQL Server 2008 R2推送数据

    [文章摘要]最近做的一个项目要获取存在于其他服务器的一些数据,为了安全起见,采用由其他“服务器”向我们服务器推送的方式实现.我们服务器使用的是SQL Server 2008 R2,其他“服务器”使用的 ...

  8. 还有人在用SQL Server 2000或2005吗? 2014来了!

    你的项目,还在用SQL Server 2000或2005吗? 很多人甚至还没有来得及用过SQL Server 2008,SQL Server 2012,现在SQL Server 2014已经出来了! ...

  9. sql server 2000 和 sql server 2005 数据库连接字符串区别

    //sql server 2000 <add name="Connection" connectionString="Data Source=.;Initial C ...

随机推荐

  1. RHEL 5.7 使用rpm安装XtraBackup问题总结

    在Red Hat Enterprise Linux Server release 5.7 (Tikanga)上使用RPM方式安装Percona Xtrabackup 2.4.6时遇到了一些问题,特意总 ...

  2. raid1 raid2 raid5 raid6 raid10的优缺点和做各自raid需要几块硬盘

    Raid 0:一块硬盘或者以上就可做raid0优势:数据读取写入最快,最大优势提高硬盘容量,比如3快80G的硬盘做raid0 可用总容量为240G.速度是一样.缺点:无冗余能力,一块硬盘损坏,数据全无 ...

  3. 解决Protege打开owl文件时程序卡死问题

    Protege在打开本地owl文件时,程序卡死,而且在终端或是命令行中也没有报错.这是因为存放该本体的文件夹下面有很多其他的文件,只需要创建一个新的文件夹并把owl文件放入其中就可以解决该问题.

  4. SQLServer图数据库一些优点

    上一篇简要介绍了图数据库的一些基本内容(初识SQL Server2017 图数据库(一)),本篇通过对比关系型一些语法来体现图数据库模式的一些优点,比如查询方便,语句易理解等. 在图数据库模型上构建查 ...

  5. SQL Server 索引重建手册

    注意: 索引重建前建议把数据库切换为完整模式,否则索引复制会在数据文件中进行,导致数据文件很大,而数据文件的收缩比日志文件的收缩要困难的多,且会对业务造成影响. 步骤一: 查询索引碎片,脚本如下,库比 ...

  6. CentOS6.5 安装并配置vsftpd

    一.获取root权限 su 输入root密码 二.检查是否安装 rpm -qa | grep vsftpd 如果安装,会显示安装版本号,没有就什么都不显示 三.若已安装过vsftpd,先卸载.卸载前, ...

  7. python发展史

    一:Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum)(龟叔).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹 打发时间,决心开发一个新的脚本解释程序, ...

  8. update layer tree导致页面卡顿

    前因 今天检查一个vue页面问题,就是在切换Tab时候(某些win10电脑),页面会卡顿一段很长的时间,短则3秒,长则十几秒,这个体验非常糟糕,于是我着手寻找其中原因. 概况 这个vue页面的元素非常 ...

  9. InfluxDB基本概念和操作

    InfluxDB基本概念 1.数据格式 在 InfluxDB 中,我们可以粗略的将要存入的一条数据看作一个虚拟的 key 和其对应的 value(field value).格式如下: 1 cpu_us ...

  10. Netty中ByteBuf 的零拷贝

    转载:https://www.jianshu.com/p/1d1fa2fe1ed9 此文章已同步发布在我的 segmentfault 专栏. 根据 Wiki 对 Zero-copy 的定义: &quo ...