SQL Server 数据库还原进度查看
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 数据库还原进度查看的更多相关文章
- 04Microsoft SQL Server 数据库创建,查看,使用,修改及删除
Microsoft SQL Server 数据库创建,查看,使用,修改及删除 创建数据库 创建普通数据库 USE [master] GO CREATE DATABASE [MyDataBase] -- ...
- [转]SQL SERVER数据库还原的方法
SQL SERVER数据库还原的方法 在SQL SERVER 2005下还原数据库 1.新建数据库A,右键还原数据库,此时目标数据库为A,选择备份 文件B_db_201311040200.BAK,还原 ...
- SQL Server数据库还原:"因为数据库正在使用,所以无法获得对数据库的独占访问权"
如题,网上找了一些客套的方法,如果不想去折腾,请看我的方法: 1.先脱机数据库,这个目的就是为了停掉所有链接 2.选择还原数据库,如果提示日志尾部不完整,请选择数据库属性的选项,覆盖现有数据. 还可以 ...
- sql server 数据库还原
1. 用sa身份或Windows Authentication登陆数据库 2.鼠标右击DataBases选New Database 3.填写DataBase name,选择Database files ...
- sql server 数据库还原后sa连接不上原因
手动创建了一个同名数据库,然后还原以前或者别人的备份,还原虽然成功了,但是在VS中连接不上,原因可能是: 数据库的所有者中没有添加sa,方法即在数据库名上右击,然后选择文件,在所有者中添加上sa,应该 ...
- SQL点滴12—SQL Server备份还原数据库中的小把戏
原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support 1 media families, ...
- SQL Server 数据库本地备份文件通过OSS工具上阿里云(恢复还原数据库)
SQL Server数据库上云,通过备份文件上传进行恢复. 1.通过OSS工具上传备份文件. 相关知识和操作步骤请参考: https://blog.csdn.net/weixin_35773751/a ...
- 数据库开发基础 SQL Server 数据库的备份、还原与分离、附加
认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是 一.在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点 二. ...
- SQL2005:SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法
SQL2005 还原数据库失败,提示如下: SQL Server 2005还原数据库时出现“不能选择文件或文件组XXX_log用于此操作的解决办法 出现错误时操作步骤为:右击数据库--->任务- ...
随机推荐
- PyQt(Python+Qt)学习随笔:在父窗口中弹出子窗口无法显现的问题
在学习和测试PyQt相关部件功能的时候,老猿经常是不同的窗口新建一个类,再新建一个Application来使用这个窗口类进行测试. 为了减少应用框架代码的重复开发,老猿决定采用主窗口叠加测试窗口的模式 ...
- PHP 的$server变量
PHP中$_SERVER["QUERY_STRING"]函数 详解PHP中$_SERVER函数的QUERY_STRING和 $_SERVER存储当前服务器信息,其中有几个值 如 ...
- 实验吧 Forms
0x1考察知识 html中value的作用 按钮中用的value 指的是 按钮上要显示的文本 比如'确定,删除 等等字样' 复选框用的value 指的是 这个复选框的值 单选框用的value 和复选框 ...
- WordCount个人项目
1.GitHub地址:https://github.com/lyh27/WordCount 2.题目描述 Word Count1. 实现一个简单而完整的软件工具(源程序特征统计程序).2. 进行单元测 ...
- 支付宝小程序input的小坑
//axml<input class="internet_input" value="{{payNo}}" onInput="keyNum&qu ...
- Deep Learning with Differential Privacy
原文链接:Deep Learning with Differential Privacy abstract:新的机器学习算法,差分隐私框架下隐私成本的改良分析,使用非凸目标训练深度神经网络. 数学中最 ...
- Codeforces Edu Round 64 A-D
A. Inscribed Figures 分类讨论打表即可. PS:这道题翻译有歧义. 这样稍微翻转一下,就可以是\(7\)个交点呀...(大概是我没看英文题干导致的惨案) #include < ...
- Linux 上安装 mysql
1.通过 yum 命令安装 mysql 可以先通过 yum list |grep mysql 方式查看有哪些版本的 mysql 2.安装 mysql yum install mysql-server ...
- java实现TCP通信(带界面)
服务端: package NetWork; import java.io.*;import java.net.*;import java.awt.event.*;import java.awt.*;i ...
- uni-app微信小程序登录授权
微信小程序授权是非常简单和常用的功能,但为了方便,还是在此记录一下要点: 首先是需要用到一个授权按钮来触发获取用户信息授权: 关键在于 open-type 为 getUserInfo , 然后有个@g ...