读书人

怎么自动还原最新的备份数据库

发布时间: 2013-08-09 15:16:24 作者: rapoo

如何自动还原最新的备份数据库?
在 e:\db_bk下有多个完全备份的数据库(如:backup_201307260230.bak等),希望编写SQL脚本自动查找目录下最新的bk文件,然后还原,每天6点自动还原。

[解决办法]
写个SP,动态产生恢复指令就OK啦
[解决办法]


create table #t
(id int not null identity(1,1), filenames varchar(500))

insert into #t(filenames)
exec master..xp_cmdshell 'dir /b/s e:\db_bk\*.bak'

declare @filename varchar(500),@tsql varchar(6000)

select @filename=max(replace(replace(filenames,'e:\db_bk\',''),'.bak',''))+'.bak'
from #t
where filenames is not null

select @tsql='restore database [数据库名] from disk=''e:\db_bk\'+@filename+''' with replace '

exec(@tsql)

drop table #t

[解决办法]
USE msdb
GO
SELECT physical_device_name
FROM backupmediafamily
WHERE media_set_id = (
SELECT MAX(media_set_id)
FROM backupset
WHERE database_name = 'data'
AND backupset.[type] = 'D'
)


data是你的数据库名称
'D'是完全备份

再用上面的文件名还原数据库
[解决办法]
楼上给出脚本了,MSDB会纪录详细的备份信息,按照备份日期排序就找到最新备份文件了然后还原。还原的时候要先KILL掉之前的连接或者修改单用户访问

读书人网 >SQL Server

热点推荐