ata',
'E:\开发软件\数据库\SQl2005示例数据库\AdvWorksData.bak'
BACKUP DATABASE AdventureWorks
TO AdvWorksData
end
改进,如果该备份文件已经存在使用当前系统日期时间作为文件名的一部分,这样每次备份几乎就不可能出现同名数据累加的现象了
代码
USE master
GO
declare @num int --申明一个接受返回值的变量
EXEC xp_fileexist 'E:\开发软件\数据库\SQl2005示例数据库\AdvWorksData.bak',@num output -- 执行文件存在否的验证 存在返回1 不存在返回0
if(@num = 1) --如果存在就给出提示或做其他功能的实现
begin
declare @file varchar(120),@name varchar(30)
set @file = 'E:\开发软件\数据库\SQl2005示例数据库\AdvWorksData_'+ replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-','_'),' ','_'),':','')+'.bak'
set @name = 'AdvWorksData'+CONVERT(VARCHAR(30),GETDATE(),9)
print '备份文件已经存在,自动按照日期重新命名进行备份'
EXEC sp_addumpdevice 'disk',@name , @file
BACKUP DATABASE AdventureWorks
TO @name
end
else --该文件不存在执行备份操作
begin
EXEC sp_addumpdevice 'disk', 'AdvWorksData',
'E:\开发软件\数据库\SQl2005示例数据库\AdvWorksData.bak'
BACKUP DATABASE AdventureWorks
TO AdvWorksData
end
注意:E:\开发软件\数据库\SQl2005示例数据库\ 该文件是已经事先创建好了的,还可以判断文件是否存在然后进行处理,但考虑一般备份文件的时候都有事先建立文件夹的习惯,所以这里不做处理。
摘自:红枫叶