ITPub博客

首页 > 数据库 > SQL Server > 【SQL Server】还原数据库

【SQL Server】还原数据库

原创 SQL Server 作者:gulunhua 时间:2016-02-03 11:52:22 0 删除 编辑

今天早上,客户经理过来说,客户发现拜访类报表的数据不对,都显示的当前组织,而且kpi值也不对。

我看了一下结存任务,判断应该是晚上的结存任务就把新的主数据给结存了,而覆盖了之前结存的1月份的主数据。

我问他是几号导入的新版主数据,他问了开发人员,说是应用程序在昨天晚上9点把之前销售代表对主数据做的修改生效了,因为不是在月中最后一天导入主数据,这样就导致新的数据覆盖了老的数据,就出问题了。

想了想,可以通过数据库的备份文件来还原数据库,然后从这个还原后的数据库中找到之前的主数据,再把主数据结存到1月份就可以。

在备份文件夹找到了最近的完整数据库备份文件,然后查看备份文件,取得数据库的逻辑名称:

点击(此处)折叠或打开

  1. RESTORE FILELISTONLY FROM
  2. DISK = 'D:\DB_backup\Nia_backup_2016_01_30_201201_3105469.bak'

然后,把还原语句改成这样,注意一定要修改还原后数据库的 数据文件、日志文件的路径,不然会和原来的数据库文件有冲突而报错:

点击(此处)折叠或打开

  1. restore database Nia_TEMP --新的数据库名称
  2. from disk = 'D:\DB_backup\Nia_backup_2016_01_30_201201_3105469.bak'
  3. with move 'kace' to 'D:\DB_backup\Nia_SFA.mdf', --数据的逻辑名称->新的物理路径
  4.      move 'kace_log' to 'D:\DB_backup\Nia_SFA.log' --日志的逻辑名称->新的物理路径
  5. /*
  6. Processed 15055352 pages for database 'Nia_TEMP', file 'lkkace' on file 1.
  7. Processed 184 pages for database 'Nia_TEMP', file 'lkkace_log' on file 1.
  8. RESTORE DATABASE successfully processed 15055536 pages in 15896.332 seconds (7.399 MB/sec).
  9. */
可以看到,一共处理了 15055352页,也就是15055352.0*8*1024/1024/1024/1024,数据库大小是114GB。
这个数据库最后花了15896.332 seconds才还原完,也就是差不多4.5个小时,真够慢的。。。

另外,通过这个语句,可以看到数据库还原的百分比,当等于100的时候,就说明还原完成了:

select percent_complete 
from sys.dm_exec_requests with(nolock)
where session_id  = xxx

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/653220/viewspace-1985939/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2011-08-01

  • 博文量
    41
  • 访问量
    30197