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. 安卓学习02---room

    title: 安卓学习02---room date: 2020-02-02 18:20:13 tags: room是jetpack的组件,可以使程序流畅的访问sqlite. <!--more - ...

  2. scrapy爬虫爬取小姐姐图片(不羞涩)

    这个爬虫主要学习scrapy的item Pipeline 是时候搬出这张图了: 当我们要使用item Pipeline的时候,要现在settings里面取消这几行的注释 我们可以自定义Item Pip ...

  3. pytorch SubsetRandomSampler 用法和说明

    官网:https://pytorch.org/docs/stable/data.html?highlight=subsetrandomsampler#torch.utils.data.SubsetRa ...

  4. Jenkins Job间传递参数的一种方法

    场景: Jenkins 中可以建多个Job,一般是主编译Job,多个子Job. 子Job要用主Job中的版本号,编译号. 1)  在主Job里面添加脚本命令: echo set MainVersion ...

  5. Tomcat启动报错org.apache.catalina.core.StandardContext.startInternal One or more listeners failed to start. Full details will be found in the appropriate container log file

    错误: 今天SVN导入新项目后启动项目时控制台报错,之后在网上搜了很多方法.下面列了一些大佬的解决方案: 1. 检查日志配置文件-logging.properties:https://www.cnbl ...

  6. idea2020.2.x/2020.3.x最新破解版方法教程无限永久重置插件激活码

    idea是一个java开发工件,相信我所有的朋友都用过.本教程教你做到完美,安全,永久.破解 idea2020.2.x和idea2020.3.x的所有版本绝对是100% 激活,支持Windows Ma ...

  7. 矩阵乘法优化DP复习

    前言 最近做毒瘤做多了--联赛难度的东西也该复习复习了. Warning:本文较长,难度分界线在"中场休息"部分,如果只想看普及难度的可以从第五部分直接到注意事项qwq 文中用(比 ...

  8. postgresql修改postgres用户密码

    [postgres@pg01 ~]$ psql -Upostgres -dpostgres postgres=# alter user postgres with password 'postgres ...

  9. hive行存储与列存储

    首先判断hive表是行存储还是列存储 判断方法: 1.使用hiveSQL"show create table table_name",这种方式,可以查看建表时候指定的那种方式; 2 ...

  10. 02-flask-路由基础

    代码 from flask import Flask # 创建Flask对象 app = Flask(__name__) # 定义路由 @app.route('/') def index(): # 函 ...