彩世界平台-彩世界时时app-彩世界开奖app苹果下载

热门关键词: 彩世界平台,彩世界时时app,彩世界开奖app苹果下载

您的位置:彩世界平台 > 工作委员会 > SQL Server 数据库还原

SQL Server 数据库还原

发布时间:2019-08-30 09:35编辑:工作委员会浏览(104)

    说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,虽然现如今SQL Server 2000软件早已经过时了,但仍然有一部分人在使用它,尤其是某些高校的学生在做毕业设计或者课程设计的时候可能会使用到,所以就把该软件的数据库还原过程保留在这里吧。

    数据库恢复大多是让人很头痛的部分。比如我,经常需要把生成环境的数据备份下来还原到测试环境中进行新功能的测试。

    ——————————————————————分割线————————————————————

    带我的前辈告诉我的方式是在SSMS中直接右键还原源选择恢复数据的来源数据库,目标选择要还原的数据库。

    在还原SQL Server 2000数据库文件之前,建议先把要还原的数据库文件复制粘贴到某个盘的根目录下,这样便于一会儿找到相关的文件,比如C盘。

    SQL Server 数据库还原

       

    这种方式的成功率很低!经常会数据库使用中的错误提示:Exclusive access could not be obtained because the database is in use

    先打开SQL Server 2000的企业管理器,如图所示:

    后来找了两种方式来保证还原时数据库没被使用:

    图片 1

    方法一:变成单用户模式

    --变成单用户模式
    USE master
    GO
    ALTER DATABASE test3 --换成你的数据库名
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    GO
    
    --恢复多用户模式
    USE master
    GO
    ALTER DATABASE test3 --换成你的数据库名
    SET MULTI_USER
    Go
    

    创建数据库(如果已经创建了相关的数据库,则可以省去此步):右键点击“数据库”,选择“新建数据库(B)...”,如图所示:

    方法二:脱机

    ---开始脱机
    ALTER DATABASE test --你的数据库名
    SET OFFLINE WITH ROLLBACK IMMEDIATE;
    
    --恢复联机
    ALTER DATABASE test --你的数据库名
    SET ONLINE WITH ROLLBACK IMMEDIATE;
    

    这样恢复成功的概率增加了很多,不过依然有一些莫名奇妙的状况导致死活恢复不了。

    后来,经过多种查找和尝试,终于找到了比较稳定的方式:

    --返回由备份集内包含的数据库和日志文件列表组成的结果集。
    --获得逻辑文件名
    USE master
    RESTORE FILELISTONLY
       FROM DISK = 'C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLBackuptest.bak'
    
    GO
    
    --test和test_log是上面查到的逻辑名称
    ----注意:当还原数据库时,可以改变数据库的名称以及它的物理文件名称,但是不可以改变它的逻辑名称,所以,当我们将一个数据库还原成为另外一个数据库时,首先要利用RESTORE FILELISTONLY命令得到它的原始逻辑名称
    USE master
    RESTORE DATABASE test2
       FROM DISK = 'C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLBackuptest.bak'
    
       WITH MOVE 'test' TO 'C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLDATAtest2.mdf',
    
                  MOVE 'test_log' TO 'C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLDATAtest_log2.ldf',
       STATS = 10, --每完成10%显示一条记录
       REPLACE ----加上 REPLACE 参数,则在现有数据库基础上强制还原
    GO
    

    效果展示:

    效果展示

    总结,从备份到还原完整流程整理如下:

    /*
           从备份生成数据库bak文件到还原到另一个数据库的完整流程
    */
    USE master
    BACKUP DATABASE backDB
      TO DISK = 'D:Backuptest.bak'
    
    --
    RESTORE FILELISTONLY
      FROM DISK = 'D:Backuptest.bak'
    
    --
    RESTORE DATABASE restoreDB
      FROM DISK = 'D:Backuptest.bak'
      WITH MOVE 'DBTest' TO 'C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLDATAtest2.mdf',
      MOVE 'DBTest_log' TO 'C:Program FilesMicrosoft SQL ServerMSSQL13.MSSQLSERVERMSSQLDATAtest_log2.ldf',
      STATS = 10,REPLACE
    GO
    

    差异备份还原:

    如果要还原差异备份,需要先还原在差异备份时间点之前的一个完整备份,在还原完整备份时要加上NORECOVERY参数。

    还原差异备份时,如果只有一个差异备份文件需要还原,无需使用NORECOVERY参数,如果有多个差异备份文件需要还原,除了最后一个差异备份文件,其他都需要加上NORECOVERY参数。

    --Datebase_backup_2016_08_29_000002_6047304 --完整备份文件
    --Datebase_backup_2016_08_31_000002_2090321 --差异备份文件
    
    --查看备份文件的逻辑名称
    RESTORE FILELISTONLY
      FROM DISK = 'R:MSSQL11.MSSQLSERVERMSSQLBackupDatebase_backup_2016_08_31_000002_2090321.bak'  
    
    ---开始脱机
    ALTER DATABASE RestoreDB 
    SET OFFLINE WITH ROLLBACK IMMEDIATE;
    
    --恢复联机
    ALTER DATABASE RestoreDB
    SET ONLINE WITH ROLLBACK IMMEDIATE;
    
    USE master
    RESTORE DATABASE RestoreDB
      FROM DISK = 'R:MSSQL11.MSSQLSERVERMSSQLBackupDatebase_backup_2016_08_29_000002_6047304.bak'
      WITH MOVE 'SKTMES_BPS_1_0_0' TO 'S:MSSQL11.MSSQLSERVERMSSQLDATASKTMES_BPS_1_0_0.mdf',
      MOVE 'SKTMES_BPS_1_0_0_log' TO 'S:MSSQL11.MSSQLSERVERMSSQLDATASKTMES_BPS_1_0_0_log.LDF',
      STATS = 10,REPLACE, --使用强制还原
      NORECOVERY  
    GO
    
    RESTORE DATABASE RestoreDB
      FROM DISK = 'R:MSSQL11.MSSQLSERVERMSSQLBackupDatebase_backup_2016_08_31_000002_2090321.bak'
      WITH MOVE 'SKTMES_BPS_1_0_0' TO 'S:MSSQL11.MSSQLSERVERMSSQLDATASKTMES_BPS_1_0_0.mdf',
      MOVE 'SKTMES_BPS_1_0_0_log' TO 'S:MSSQL11.MSSQLSERVERMSSQLDATASKTMES_BPS_1_0_0_log.LDF',
      STATS = 10   --最后一个差异备份文件不需要添加 NORECOVERY
    GO
    

    参考:

    1. 使用bak文件还原SQL Server
    2. SQL Server 数据库备份和还原认识和总结(一)
    3. SQL Server 数据库备份和还原认识和总结(二)
    4. RESTORE DATABASE命令还原SQLServer 2005 数据库
    5. SQL Server的差异备份还原

    图片 2

    然后在打开的窗体中输入要创建的数据库名称,并点击“确定”按钮,这样数据库就创建好了。如图所示:

    图片 3

    还原数据库

    右键点击刚刚创建的那个数据库名称,选择所有任务——还原数据库,如图所示:

    图片 4

    然后在打开的窗体中,选择“从设备(M)”,并且点击“选择设备”按钮,如图所示:

    图片 5

    本文由彩世界平台发布于工作委员会,转载请注明出处:SQL Server 数据库还原

    关键词:

上一篇:没有了

下一篇:SQL Server 数据库还原