zoukankan      html  css  js  c++  java
  • 数据库的备份与还原

    这几天在做数据库的迁移,所以就会涉及到数据库的备份与还原,即从当前数据库中备份出数据库文件,然后将备份文件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脚本,如下图。

    导出还原数据库的脚本。

  • 相关阅读:
    ASP.NET MVC案例——————拦截器
    Windows Azure Virtual Network (10) 使用Azure Access Control List(ACL)设置客户端访问权限
    Windows Azure Storage (20) 使用Azure File实现共享文件夹
    Windows Azure HandBook (5) Azure混合云解决方案
    Windows Azure Service Bus (6) 中继(Relay On) 使用VS2013开发Service Bus Relay On
    Azure PowerShell (9) 使用PowerShell导出订阅下所有的Azure VM的Public IP和Private IP
    Windows Azure Service Bus (5) 主题(Topic) 使用VS2013开发Service Bus Topic
    Azure China (9) 在Azure China配置CDN服务
    Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob
    Windows Azure HandBook (4) 分析Windows Azure如何处理Session
  • 原文地址:https://www.cnblogs.com/mcgrady/p/4798788.html
Copyright © 2011-2022 走看看