sqlserver 差异备份,如何批量还原?

以前设置备份计划的时候,不小心弄成差异备份了,现在不能直接用最新的还原,报错是“...因为没有文件可用于前滚”。网上查了大概是备份是差异备份的原因,但网上差异备份还原的方法大多都只写了先还原一个最早的完整备份(这个我也有),再还原新的差异还原(但我有上百个,不可能手工一个一个操作)。

批量还原代码如下:

Use master
GO
/*=================Usp_RestoreMuiteDataBaseFromPath========================
=====Restore Mutite DataBase File From a Path ======
=====Ken.Guo ======
=====2010.9.10 ======
=====Version: 2005 & 2008 SQL Server ======
=====EXEC Usp_RestoreMuiteDataBaseFromPath 'D:\databack','',0 ======
=========================================================================
*/
CREATE PROC Usp_RestoreMuiteDataBaseFromPath
( @DatabBaseBakPath nvarchar(400)
,@RestoreDataPath nvarchar(400)='' --RESTORE DATABASE PATH
,@IsRun smallint=0 -- 0 PRINT 1 run
)
AS
BEGIN
set nocount on
DECLARE @BackUpFileName nvarchar(200)
,@DbName nvarchar(200)
,@errorinfo nvarchar(400)

IF not exists(SELECT 1
FROM master.sys.procedures WITH(NOLOCK)
WHERE
name=N'Usp_RestoreDataBaseFormPath'

)
begin
Raiserror 50001 N'找不到存储过程SP_RestoreDataBaseFormPath '
Goto ExitFLag
end

--add path \
if (@DatabBaseBakPath is not null) and len(@DatabBaseBakPath)>1
and (right(@DatabBaseBakPath,1)<>'\')
set @DatabBaseBakPath=@DatabBaseBakPath+'\'

--Check Restore Path and Size >1000M
DECLARE @checkdrive int
SET @checkdrive=1
EXEC master.dbo.Usp_Check_DriveExists @RestoreDataPath,@checkdrive OUTPUT

IF(@checkdrive<>1)
Goto ExitFLag

DECLARE @Dir TABLE
(
BackDBFileName nvarchar(100)
,DEPTH int
,[File] int
)

INSERT INTO @Dir EXEC xp_dirtree @DatabBaseBakPath
,1
,1

DELETE FROM @Dir
WHERE charindex('.bak',BackDBFileName)=0

if not exists (select top 1 1 from @Dir)
begin
Raiserror 50001 N'在提供的路径下没有找到合符要求的备份文件'
Goto ExitFLag
end

declare db_file Cursor Local Static Read_Only Forward_Only
for
select BackDBFileName from @Dir

Open db_file
Fetch Next from db_file into @BackUpFileName
while @@FETCH_STATUS=0
begin
--Restore DataBase
set @BackUpFileName=@DatabBaseBakPath+@BackUpFileName
exec master.dbo.Usp_RestoreDataBaseFormPath @BackUpFileName,@RestoreDataPath,@IsRun
Fetch Next from db_file into @BackUpFileName
end
Close db_file
deallocate db_file

ExitFLag:
set nocount off
end
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-01-30
先还原最近完整备份,然后还原最新差异备份追问

如何判断一对相似文件名里哪个是完整备份?

本回答被提问者采纳

sqlserver数据库数据被删除了怎么还原?
1、至少有一个误删除之前的数据库完全备份数据库的恢复模式(Recovery mode)是“完整(Full)针对这两个前提条件,如果这两个前提条件都存在,通过SQL语句只需三步就能恢复参考文章,无需借助第三方工具。2、备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY...

sqlserver数据库数据被删除了怎么还原
a) 备份当前数据库的事务日志:BACKUP LOG [数据库名] TO disk= N'备份文件名' WITH NORECOVERY b) 恢复一个误删除之前的完全备份:RESTORE DATABASE [数据库名] FROM DISK = N'完全备份文件名' WITH NORECOVERY, REPLACE c) 将数据库恢复至误删除之前的时间点:RESTORE LOG [数据库] FROM ...

SQL SERVER恢复策略
在这种方式下,选择要备份和恢复的数据库,单击鼠标右键,在快捷菜单中的“ALL TASKS”下选择备份或者恢复数据库。2)半手工方式。这种方式就是管理员事先建立备份或者恢复数据库的作业,待到备份或者恢复数据库的时候,管理员打开“SQL SERVER ENTEPRISE MANAGER”,在“MANAGER”里找到相应的作业,然后执行...

sql server 2005中清除了表中数据怎么恢复?
记下清除数据的时间,然后备份当前的日志.backup log dbname to backupdevice(就是备份设备的名字) with norecovery 然后恢复日志:restore log dbname from backupdevice with stopat=时间(清除表中数据之前的时间,注意时间格式)

Sql Server如何备份?
文件组备份:可以备份和还原数据库中的个别文件。可以只还原已损坏的文件,而不用还原数据库的其余部分,从而加快了恢复速度。需要注意的点:有备份任务里边选择备份的库尽量选‘所有用户数据库'这项,以免选择了特定数据库备份以后某天添加了新数据库却忘了勾选导致丢备份;选项验证备份集完整性和压缩备份...

SQL Server提供的3种恢复模型都是什么?有什么区别
完全恢复的备份包括:数据库备份 差异备份 事务日志备份 将数据库还原到故障点步骤:1.备份当前活动事务日志 2.还原最新数据库备份但不恢复数据库 3.按照创建的顺序,还原自数据库备份后创建的每个事务日志备份,但不恢复数据库 4.应用最新的事务日志备份(步骤1中创建的)并恢复数据库 3.大容量日志记录...

sqlserver数据库备份方式有哪些
【推荐阅读:sql server是什么意思】一:sql server数据库四种备份方式1. 全备份全备份只需要一步就能完成所有数据的备份,如果全部备份的话,可能要花费很长的时间,备份完成之后,会在数据库中存在一个副本。2.差异备份差异备份主要是记录从上次备份数据之后,只对发生更改的数据进行备份,之前的数据是不...

SQL Server备份出错及应对措施
如果你只做全备份 那么受限于全备份的大小和备份时间 不可能常做 而且只有全备份 不能将数据库恢复至某个时间点 所以 我们需要全备份+日志备份 比如每天一个全备份 每隔 小时或若干分钟一个日志备份 说到差异备份 因为微软的差异备份记录的是上一次全备份以来发生的变化 所以 如果数据库的改动很频繁的...

如何使用windows Server2012自带的 Backup备份和恢复
1备份当前事务日志。2还原从星期天晚上开始的数据库备份。3还原从星期三晚上开始的差异备份,将数据库前滚到这一时刻。4还原从早上4点到8点的事务日志备份,以将数据库前滚到早上8点。5还原故障之后的日志备份,这将使数据库前滚到故障发生的那一刻。SQL2000支持备份或还原数据库中的个别文件或文件组...

sql数据库删除了怎么恢复数据
1.至少有一个误删除之前的数据库完全备份。2.数据库的恢复模式(recovery mode)是“完整(full)”。针对这两个前提条件,会有三种情况:情况一、如果这两个前提条件都存在,通过sql语句只需三步就能恢复(参考文章),无需借助第三方工具。a)备份当前数据库的事务日志:backup log [数据库名]to di...

相似回答