我已经讨论了各种确定恢复状态的方法,但是本周我参与了一个围绕回滚的有趣讨论。交易已经运行了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. 信号量的基本概念与使用semget,semop

    1.信号量的基本概念 信号量是一个计数器,常用于处理进程或线程的同步问题,特别是对临界资源的同步访问. 临界资源可以简单的理解为在某一时刻只能由一个进程或线程进行操作的资源,这里的资源 可以是一段代码 ...

  2. 十大经典排序算法的python实现

    十种常见排序算法可以分为两大类: 非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序.包括:冒泡排序.选择排序.归并排序.快速 ...

  3. ASP.NET -- WebForm -- 页面生命周期事件

    ASP.NET -- WebForm --  页面生命周期事件在页生命周期的每个阶段中,页将引发可运行您自己的代码进行处理的事件. 1. PreInit: 使用该事件来执行下列操作: 检查 IsPos ...

  4. ubuntu 安装FoxitReader福昕阅读器(转载)

    虽然不怎么用Ubuntu来看文档,但是偶尔还是需要看一下的.而Ubuntu自带的打开PDF的软件真的看着很难受,装一个跨平台的福昕好了. 首先,下载.可以官网下载:福昕官网 不过晚上不知道网络抽风还是 ...

  5. win10上如何启用或禁用Windows功能

    Windows10上提供了很多的功能,比如打印服务.传真服务.媒体服务等,怎样启用或禁用某些Windows功能呢? 工具/原料   windows10 方法/步骤     点击左下角的Windows图 ...

  6. 前端性能优化成神之路--vue组件懒加载(Vue Lazy Component )

    ---恢复内容开始--- 使用组件懒加载的原因 我们先来看看这样的一个页面,页面由大量模块组成,所有模块是同时进行加载,模块中图片内容较多,每个模块的依赖资源较多(包括js文件.接口文件.css文件等 ...

  7. UVA11059-Maximum Product(动态规划)

    Problem UVA11059-Maximum Product Accept:4769  Submit:38713 Time Limit: 3000 mSec  Problem Descriptio ...

  8. 如何征服面试官,拿到Offer [转]

    转自 https://my.oschina.net/cccyb/blog/3012768 又到了茶余饭后的时间,想想写点什么,掐指一算,噢呦,快到3月份了,职场的金三银四跳槽季又来了,不同的是今年比往 ...

  9. 转://Linux下误删除/home目录的恢复方法

    一般情况下,我们在安装Oracle数据库的时候,都会创建一个Oracle用户,用该用户来安装和管理Oracle.Oracle用户的根目录就是/home/oracle. 通常安装Oracle数据库是按照 ...

  10. 【vue】在移动端使用better-scroll 实现滚动效果

    安装依赖:(c)npm install better-scroll --save 引入: import BScroll from 'better-scroll' 格式: var obj = new B ...