SQL server自动备份并FTP远程传输

出于安全考虑,SQL数据库备份文件,很多时候需要本地备份完后,传输至远程服务器保留,下面脚本利用SQL代理作业,对多个数据库进行备份后传输至远程服务器:

--Backup(循环备份多个数据库)

Declare @str varchar(max)=''

select

@str=@str+'Backup Database '

+name+' to disk = ''E:\test\sqlbak\'

+name+'_'+replace(replace(replace(convert(nvarchar(16),getdate(),120),'-','_'),':','') , ' ','_')

+'.bak'' with compression,init;'

from sys.databases where name in ('dev','weekseo')

select @str ;

exec (@str);

EXEC xp_cmdshell 'ftp -s:E:\test\ftpconfig.txt 127.0.0.1'

--Del backupfile(删除过期的备份文件)

Declare @Date datetime

select @Date=GETDATE()-10

print @Date

EXECUTE master.dbo.xp_delete_file 0,N'E:\test\sqlbak',N'bak',@Date

注意:上面脚本,其中E:\test\ftpconfig.txt 是FTP的配置文件,包括用户名密码等信息,这里不做介绍,E:\test\sqlbak为数据库本地备份目录。另外127.0.0.1要调整成自己的远程服务器。