SQL Server 数据库还原进度查看

关键字:数据库,还原,进度,查看

文档说明:

本文档受某实际需求启发,某约500G大小数据库还原,由于对应服务器性能较差(内存仅4G且可用内存仅2.8G),数据库的还原一直停留在还原界面,只从数据库还原界面无法查看具体数据库还原进度。通过上网搜集整理,现总结本文档,因个人水平有限,部分知识点可能有缺失甚至错漏,敬请指正

场景描述:

正常进行SQL Server数据库备份还原,选择源设备等等……

点击确定开始数据库还原,可以看到左下角有进度:“正在执行(0%)”

但实际上该进度无实际效果,即使最终数据库完成备份还原,该进度仍然显示“正在执行(0%)”

进度查看:

以sa身份执行

sp_who2

可以查看当前连接情况,从其中找到Command=‘RESTORE DATABASE’,根据其SPID

执行,其中session_id即为上面SPID。

SELECT

session_id, request_id, start_time, status, command

, percent_complete, estimated_completion_time,wait_time, cpu_time, total_elapsed_time, scheduler_id

,sql_handle

--,statement_start_offset, statement_end_offset, plan_handle

, database_id, user_id --,connection_id

, blocking_session_id

, wait_type, last_wait_type, wait_resource, open_transaction_count, open_resultset_count, transaction_id

--, context_info

--, task_address

, reads, writes, logical_reads

--, text_size, language, date_format, date_first, quoted_identifier, arithabort, ansi_null_dflt_on, ansi_defaults, ansi_warnings, ansi_padding, ansi_nulls, concat_null_yields_null, transaction_isolation_level, lock_timeout, deadlock_priority, row_count, prev_error, nest_level, granted_query_memory, executing_managed_code, group_id, query_hash, query_plan_hash

FROM sys.dm_exec_requests WHERE session_id=56

也可以使用如下语句,语句执行时注意按照实际情况选择将对应where条件取消注释

SELECT DB_NAME(er.[database_id]) [DatabaseName]

,er.[command] AS [CommandType]

,CONVERT(DECIMAL(5, 2), er.[percent_complete]) AS [Complete_Percent]

,er.start_time

,CONVERT(DECIMAL(38, 2), er.[total_elapsed_time] / 60000.00) AS [ElapsedTime_m]

,CONVERT(DECIMAL(38, 2), er.[estimated_completion_time] / 60000.00) AS [EstimatedCompletionTime_m]

,CONVERT(DECIMAL(38, 2), (er.[total_elapsed_time] / 60000.00 * ((100-er.[percent_complete])/er.percent_complete))) AS [EstimatedCompletionTime_m2]

FROM sys.dm_exec_requests AS er

WHERE 1=1

--and DB_NAME(er.[database_id]) in ('')

and er.[percent_complete] >0

--and er.[command] in ('RESTORE DATABASE' ,'BACKUP DATABASE','BACKUP LOG','RESTORE LOG')

order by er.start_time desc



可以从中看到percent_complete,对应数据库还原进度。一般来说当该值变为100时,意味着数据库还原会很快完成。但某现场使用个人PC作为SQL服务器,其内存总4G,可用内存2.8G,数据库备份大小约250G,数据库数据文件大小约300G,数据库日志大小约200G,数据库还原总耗时约19个小时。

其中percent_complete为100后仍等待了较长时间(超过4个小时),可以查看到其中等待类型:BACKUPTHREAD

参考网址:

http://itknowledgeexchange.techtarget.com/sql-server/what-is-the-backupthread-wait-type/

http://www.sqlserver-dba.com/2014/03/troubleshooting-backupthread-wait-type.html

等待类型:PAGELATCH_SH

参考网址:

http://www.tiejiang.org/2514.html

等待类型:SOS_SCHEDULER_YIELD

参考网址

http://www.itpub.net/thread-1853501-1-1.html

以上几个等待类型基本上是因为PC性能(主要是内存)有限,导致大量的类似等待,同样较低的电脑性能也整体影响了数据库的还原速度。

图形化界面不显示进度的替代解决方案

使用SQL语句。在使用图形化界面还原数据库时,所有设置完成后,点击“脚本”,选择将其生成到新查询窗口。

注意其中关键在于“STATS”选项

这样执行结果就可以在消息中看到进程,简单易用

**

**

补充:

1、 SQL Server 数据库备份和还原认识和总结(二)

参考网址:http://www.cnblogs.com/PongorXi/archive/2012/08/05/2623522.html

2、 特别推荐:浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架

参考网址:http://www.cnblogs.com/CareySon/archive/2012/02/13/2349751.html

SQL Server 数据库还原进度查看的更多相关文章

  1. 04Microsoft SQL Server 数据库创建,查看,使用,修改及删除

    Microsoft SQL Server 数据库创建,查看,使用,修改及删除 创建数据库 创建普通数据库 USE [master] GO CREATE DATABASE [MyDataBase] -- ...

  2. [转]SQL SERVER数据库还原的方法

    SQL SERVER数据库还原的方法 在SQL SERVER 2005下还原数据库 1.新建数据库A,右键还原数据库,此时目标数据库为A,选择备份 文件B_db_201311040200.BAK,还原 ...

  3. SQL Server数据库还原:"因为数据库正在使用,所以无法获得对数据库的独占访问权"

    如题,网上找了一些客套的方法,如果不想去折腾,请看我的方法: 1.先脱机数据库,这个目的就是为了停掉所有链接 2.选择还原数据库,如果提示日志尾部不完整,请选择数据库属性的选项,覆盖现有数据. 还可以 ...

  4. sql server 数据库还原

    1. 用sa身份或Windows Authentication登陆数据库 2.鼠标右击DataBases选New Database 3.填写DataBase name,选择Database files ...

  5. sql server 数据库还原后sa连接不上原因

    手动创建了一个同名数据库,然后还原以前或者别人的备份,还原虽然成功了,但是在VS中连接不上,原因可能是: 数据库的所有者中没有添加sa,方法即在数据库名上右击,然后选择文件,在所有者中添加上sa,应该 ...

  6. SQL点滴12—SQL Server备份还原数据库中的小把戏

    原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support  1 media families, ...

  7. SQL Server 数据库本地备份文件通过OSS工具上阿里云(恢复还原数据库)

    SQL Server数据库上云,通过备份文件上传进行恢复. 1.通过OSS工具上传备份文件. 相关知识和操作步骤请参考: https://blog.csdn.net/weixin_35773751/a ...

  8. 数据库开发基础 SQL Server 数据库的备份、还原与分离、附加

    认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是 一.在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点 二. ...

  9. SQL2005:SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法

    SQL2005 还原数据库失败,提示如下: SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法 出现错误时操作步骤为:右击数据库--->任务- ...

随机推荐

  1. PyQt(Python+Qt)学习随笔:QDockWidget停靠窗相关的信号

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QDockWidget的信号包括与属性变更相关的allowedArea ...

  2. PyQt(Python+Qt)学习随笔:exit code 1073741845与槽函数所在对象不能定义同名实例方法问题

    最近做了几次测试,在PyQt中如果使用与槽函数同名的实例方法可能会导致不可控的错误. 案例1:如果两个信号映射到同名的槽函数,虽然参数不一样,但真正响应的槽函数是最后定义的槽函数,具体案例请见< ...

  3. Shell命令和流程控制[linux常用命令的使用]

    在shell脚本中使用三类命令: unix命令 概念:管道.重定向.backtick 流程控制 1 unix命令 echo "some text":在屏幕上输出信息 ls:文件列表 ...

  4. 【软件测试部署基础】webpack的认识

    1. 什么是webpack webpack 是一个 JavaScript 应用程序的静态模块打包器(module bundler). 它做的事情就是分析你的项目结构,找到JavaScript模块以及其 ...

  5. C#清除HTML标签方法

    删除字符串中HTML标签代码 public static string ClearHTMLTags1(string HTML) { string[] Regexs ={ @"<scri ...

  6. 【题解】P3629 [APIO2010]巡逻

    link 题意 有 \(n\) 个村庄,编号为 \(1, 2, ..., n\) .有 \(n – 1\) 条道路连接着这些村 庄,从任何一个村庄都可以到达其他任一个村庄.道路长度均为 1. 巡警车每 ...

  7. Spring AOP的理解(通俗易懂)。

    转载 原文链接:http://www.verydemo.com/demo_c143_i20837.html 这种在运行时,动态地将代码切入到类的指定方法.指定位置上的编程思想就是面向切面的编程. 1. ...

  8. JavaSE11-多态&抽象类&接口

    1.多态 1.1 多态的概述 什么是多态 同一个对象,在不同时刻表现出来的不同形态 多态的前提 要有继承或实现关系 要有方法的重写 要有父类引用指向子类对象 1.2 多态中的成员访问特点 成员访问特点 ...

  9. Fastjson 1.2.47 远程命令执行漏洞复现

    前言 这个漏洞出来有一段时间了,有人一直复现不成功来问我,就自己复现了下,顺便简单记录下这个漏洞原理,以便后面回忆. 复现过程 网上已经有很多文章了,这里就不在写了.主要记录一下复现过程中遇到的问题 ...

  10. 牛客挑战赛46 B

    题目链接: 最小的指数 乍一看还以为是Pollard_rho算法,其实大可不必. 发现\(1<= n <= 1e18\),我们可以将n分为两部分(分块思想降低时间复杂度). 剔除小于等于\ ...