为了实现数据库的自动备份和上传,特意写了以下脚本,可以加在作业里。
要求:1.自动生成以当天日期为名的文件夹。并将目标数据库备份在文件夹里
2.将备份数据库上传到备用服务器里。
declare @strsql varchar(1000), --执行语句
@strdirname varchar(50),--建立文件夹名
@strcmd varchar(50), --执行命令名
@strsend varchar(1000), --邮件发送语句
@strdate varchar(50) --邮件发送日期
set @strsql='backup database pubs to disk=''d:/backup/erp/'
set @strdirname=replace(substring(convert(varchar(20),getdate(),120),1,10),'-','')
set @strcmd='md d:/backup/erp/'
set @strcmd=@strcmd+@strdirname
--取得当天日期,格式为yyyy-mm-dd
set @strdate=substring(convert(varchar(50),getdate(),120),1,10)
set @strsend='sys_sendmail ''1000@hm.com'',''213@hm.com'',''www'',''备份通知'','''+@strdate+'日数据库备份成功,感谢您的使用!'''
exec xp_cmdshell @strcmd
set @strsql=@strsql+@strdirname+'/pubs.dat''with init,nounload,noskip,noformat'
print @strsql
exec (@strsql)
backup database pubs to disk='d:/backup/erp/pubs.dat' with init,nounload,noskip,noformat
--用FTP上传到ERP服务器
exec xp_cmdshell 'ftp -s:"D:/backup/erp/ftp.txt"'
--操作成功后发送邮件
exec(@strsend)
if @@error <> 0
begin
raiserror('数据库备份发生错误,请检查设置',16,1)
set @strsend='sys_sendmail ''1000@hm.com'',''213@hm.com'',''www'',''备份通知'','''+@strdate+'日数据库备份失败,请检查设置!'''
exec (@strsend)
end