ZT sql server 备份恢复

来源:互联网 发布:互易二端口网络 编辑:程序博客网 时间:2024/04/29 19:43

恢复失败后去除loading状态:RESTORE DATABASE PRDCLONE2 WITH RECOVERY

一. 数据库的备份与还原方式
一般使用的数据库备份与还原方式有两种,SQL Server自带SQL命令备份还原;软件SQL LiteSpeed备份还原。
二. 数据库的备份与还原
(一)。SQL Server自带命令备份还原
      1.数据库备份。
       数据库的备份分为三种,一是完整备份,二是差异备份,三是日志备份。在三种备份里面完整备份是必须的,因为差异备份和日志备份都必须在完整备份的基础上才能进行还原,如果没有完整备份,那么差异备份和日志备份都是没有意义的。
       完整备份:例如我们要备份172.26.10.2上的BIL数据库,SQL语句为
       Use master Backup Database BIL to disk='d:/backup/BIL/BIL_Full071009.Bak' with init/noinit
       其中红色部分为可变参数,注意:init表示覆盖相同文件名的完整备份文件,noinit则相反。使用读取备份文件命令可以检验备份文件是否正常。
       Restore filelistonly from disk='d:/backup/BIL/BIL_Full071009.bak' 如果返回如图记录集那么证明备份文件是正常可用的。
       差异备份:
Use master Backup database BIL to disk='d:/Backup/BIL_Diff071009.bak' with init/noinit,differential
       注意:differential表示进行差异备份。读取文件命令与完整备份相同,返回记录集格式也相同。
       日志备份:
       Use master Backup log BIL to disk='d:/Backup/BIL_Log071009.trn' with init/noinit
       注意:noinit表示在原来备份文件上附加新的备份文件,我们一般都是采用noinit方式一天的日志备份放在同一个文件内,如果数据量非常大(一天日志平均超过5G)我们会一天分为两个或多个文件存储。读取日志备份文件命令为
       Restore headeronly from disk='d:/Backup/BIL_Log071009.trn' 如果返回记录集如下图那么证明日志备份文件是正常可用的。
其中Position栏位代表每个日志文件在整个文件中的位置,和其相对的还有一个栏位是backupfinishdate在图片中没有显示出来,他代表的就是日志文件备份完成的时间。
       2.数据库还原
       要想还原一个数据库那么必须要有一个完整备份,首先还原完整备份,如果有差异备份还原差异备份,最后还原日志备份。
       例如我们要还原上面的BIL数据库。首先我们要还原他的完整备份
       Use master Restore database BIL from disk='d:/backup/BIL/BIL_Full071009.bak' with recovery/norecovery/standby=’d:/undo_bil.dat’,move ‘IBM_Data’ to ‘d:/NEWData/BIL_Data.mdf’,move ‘IBM_Log’ to ‘d:/NEWData/BIL_log.ldf’
注意:recovery,数据库还原完成状态(不可继续还原)。Norecovery,数据还原状态(不可用,但可以继续还原),StandBy,数据还原状态(只读,可以继续还原)。如果之前数据库所在磁盘目录存在(图一中physicalname目录d:/TEST),并且不需要更换新的数据库文件存放位置,不需要使用move参数。如果我想更换文件存储位置则使用move参数,IBM_Data & IBM_Log为图一中LogicalName, d:/NEWData/BIL_Data.mdf & IBM_Log’ to ‘d:/NEWData/BIL_log.ldf是新的数据库文件存放位置及文件名称。
其次,如果有差异备份就还原完整备份后的差异备份(距离你需要还原日期最近的差异备份),还原方法与完整备份相同,最后从完整备份或差异备份之后的第一个日志开始还原,然后按顺序继续还原之后的日志备份。
Restore log BIL from disk='d:/Backup/BIL_Log071009.trn' with recovery/norecovery/standby=’d:/undo_bil.dat’,File=Position
注意:recovery/norecovery/standby=’d:/undo_bil.dat’参数与完整和差异备份还原相同,其中standby文件一定要与前面还原差异和完整备份时相同,否则还原会失败并使数据库不能继续被还原。Position为图二中position栏位的值,要确定position的值,首先读出日志文件可以看到每个日志备份文件完整的时间,可以查出完整备份或差异备份之后的第一个日志所对应的position。
在做最后一步还原动作时,要把参数设置为recovery,这样表示数据库变为不需要再进行还原的可以使用状态。
在还原是最主要的时间的连续性,最近的完整备份==》最近的差异备份==》差异或完整备份后的第一个日志备份。
(二)。SQL LiteSpeed备份还原
       LiteSpeed是一个SQL server备份还原的第三方软件,他的主要功能一个是压缩备份文件的大小节省磁盘空间,最大可达95%压缩率;另外一个是缩短备份和还原时间,最大缩短备份时间可达70%,最大缩短还原时间可达50%。并且软件安装简单,所有设置都可以使用默认值。路径//172.26.8.1/d$/share/qms_software/
       LiteSpeed备份和还原数据库的规则与SQL server自带规则是一样的,只是语句上有所不同。
1. 数据库备份
我们还是以上面BIL数据库为例。
完整备份:
use master xp_backup_database @database='BIL',@FileName='d:/backup/BIL/BIL_Full071009.Bak',@init=1/0,@affinity=3
其中@init=1/0,当等于1时表示with init,等于0时表示with noinit
差异备份:
use master xp_backup_database @database='BIL',@FileName='d:/backup/BIL/BIL_diff071009.Bak',@with='differential', @init=1/0,@affinity=3
@with=’differential’表示差异备份。
              读取完整或差异备份文件:
use master xp_restore_filelistonly @filename='d:/backup/BIL/BIL_Full071009.Bak'
日志备份:
Use master xp_backup_log @database='BIL' ,@filename='d:/Backup/BIL_Log071009.trn',@init=1/0,@affinity=3
读取日志备份文件:
Use master xp_restore_headeronly @filename='D:/Databack/bil_log0701009.trn'
结果文件与SQL server返回结果格式(前面两图)有点差别,比如多了几个栏位(日志文件里面多了个filenumber栏位在还原时有用到),总体上格式是类似的。
2. 数据库还原
       还原的规则与上面的规则相同。主要差别在于使用语句不同。
       还原完整或差异备份:
       Use master xp_Restore_database @database='BIL',@filename='d:/backup/BIL/BIL_Full071009.bak' @with='recovery/norecovery/standby="d:/undo_bil.dat"',@with='move "IBM_Data" to "d:/NEWData/BIL_Data.mdf"',@with='move "IBM_Log" to "d:/NEWData/BIL_log.ldf"'
       还原日志备份:
Master..xp_restore_log @database='BIL',@filename='D:/Databack/bil_log0701009.trn',@filenumber=2,@with='recovery/norecovery/standby="d:/undo_bil.dat"'
其中filenumber确定的方法与上面的相同,只不过position栏位改为filenumber栏位
三.             QSMC的数据库备份与还原方式
在我们的SQL Server中有一部分是用SQL Server旧的方式去进行备份,大部分转成SQL Litespeed备份方式,从job的命名就可以看出数据库是根据什么方式进行备份的,例如NB25 SMT服务器上的SMT数据库的备份方式就是litespeed,那么在job BackupSMT_Full(LiteSpeed)中就有标识为(liteSpeed)。