zoukankan      html  css  js  c++  java
  • SQL Server还原数据库实战


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

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

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

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

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

    点击(此处)折叠或打开

    1. RESTORE FILELISTONLY FROM 
    2. DISK = 'D:DB_backupNia_backup_2016_01_30_201201_3105469.bak'


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

    点击(此处)折叠或打开

    1. restore database Nia_TEMP --新的数据库名称 
    2. from disk = 'D:DB_backupNia_backup_2016_01_30_201201_3105469.bak' 
    3. with move 'kace' to 'D:DB_backupNia_SFA.mdf', --数据的逻辑名称->新的物理路径 
    4.      move 'kace_log' to 'D:DB_backupNia_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

  • 相关阅读:
    C#连接Oracle数据库的连接字符串
    Oracle
    SQL 计算某月有多少天
    七牛开发者文档中心
    ocrstyle
    Linux的sys接口和proc接口创建
    BusHelper
    MeiTuanLocateCity
    Shop
    Win10预览版10162全新安装及激活全过程图解
  • 原文地址:https://www.cnblogs.com/momogua/p/8304386.html
Copyright © 2011-2022 走看看