• 数据库的备份与还原


    这几天在做数据库的迁移,所以就会涉及到数据库的备份与还原,即从当前数据库中备份出数据库文件,然后将备份文件copy到新服务器并还原。

    备份

    备份有两种操作方式,一是通过UI操作,另一种是通过sql脚本。

    1,通过UI操作方式

    数据库上右键,选择TasksBack up...

    clipboard

    通过UI备份的过程中,碰到备份出来的文件很大,原因是没有压缩,所以要注意改一下这里的配置。

    clipboard[1]

    2,通过sql脚本

    BACKUP DATABASE HotelCacheDB TO DISK=N'd:
    .ludev.db.backupHotelCacheDB_backup_2015_09_10_011507_1111111.bak' WITH COMPRESSION; --注意设置 WITH COMPRESSION压缩
    
    GO

    还原

    同样,还原也有两种方式,通过UI操作和通过sql脚本。

    1,通过UI操作

    ...

    2,通过sql脚本

    --1,判断原数据库是否存在,如果存在,先删除 
    
    IF EXISTS( SELECT 1 FROM sys.databases 
    
    WHERE name= N'HotelDB') 
    
    BEGIN 
    
     ALTER DATABASE HotelDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE;--防止因数据库正在使用导致drop失败 
    
     DROP DATABASE HotelDB; 
    
    END 
    
    --2,还原数据库 
    
    RESTORE DATABASE HotelDB FROM  DISK = N'D:dev.db.backupHotelDB_backup_2015_09_10_011507_0000000.bak' WITH REPLACE; 
    
    GO

    在第2步还原数据库的时候,有可能碰到因路径太长导致报错,一般错误信息如下。

    Msg 5133, Level 16, State 1, Line 1

    Directory lookup for the file "D:DataMSSQL10_50.DEVMSSQLDATAHotelCacheDB.mdf" failed with the operating system error 3(The system cannot find the path specified.).

    Msg 3156, Level 16, State 3, Line 1

    File 'HotelCacheDB' cannot be restored to 'D:DataMSSQL10_50.DEVMSSQLDATAHotelCacheDB.mdf'. Use WITH MOVE to identify a valid location for the file.

    Msg 5133, Level 16, State 1, Line 1

    Directory lookup for the file "D:DataMSSQL10_50.DEVMSSQLDATAHotelCacheDB_log.ldf" failed with the operating system error 3(The system cannot find the path specified.).

    Msg 3156, Level 16, State 3, Line 1

    File 'HotelCacheDB_log' cannot be restored to 'D:DataMSSQL10_50.DEVMSSQLDATAHotelCacheDB_log.ldf'. Use WITH MOVE to identify a valid location for the file.

    有两种解决方案,一是修改sql脚本,添加MOVE...TO选项

    RESTORE DATABASE HotelDB FROM  DISK = N'D:dev.db.backupHotelDB_backup_2015_09_10_011507_0000000.bak' WITH  FILE = 1,  MOVE N'HotelDB' TO N'D:ToolsProgram Files (x86)SQL Server 2008 R2MSSQL10_50.SZVMSJSKF012MSSQLDATAHotelDB.mdf',  MOVE N'HotelDB_log' TO N'D:ToolsProgram Files (x86)SQL Server 2008 R2MSSQL10_50.SZVMSJSKF012MSSQLDATAHotelDB.ldf',  NOUNLOAD,  REPLACE,  STATS = 10; 
    
    GO

    另一种方案是采用UI操作的方式还原也可以。

    小技巧

    可以在UI操作的时候,导出sql脚本,如下图。

    导出还原数据库的脚本。

  • 相关阅读:
    Oracle
    注解
    java 算法实现
    ConcurrentHashMap
    hashMap 1.8
    hashmap 1.7
    MySQL优化
    Mysql面试题
    tmux
    mysql 复制表结构、表数据的方法
  • 原文地址:https://www.cnblogs.com/mcgrady/p/4798788.html
Copyright © 2020-2023  润新知