利用TSQL脚本将备份数据自动上传到ftp

继SQL Server自动备份并压缩文件后,需要上传到指定FTP。

 

思路是通过 ftp -n -s:c:\upload.ftp 来实现自动上传。

c:\upload.ftp是FTP命令集,格式如下:

 

open 192.168.1.150
user TEST
123
cd /backupdir
lcd c:\sqlback
prompt off
put filename
bye

 

那么TSQL的代码主要是生成这个文件:

 

declare @filename varchar(100)
declare @ftpfile varchar(260)
declare @batchcmd varchar(200)
declare @path varchar(200)

set @path = 'D:\sqlback\'
set @filename = 'mydatabase_db_' + convert(varchar(10), getdate(),112) + '.rar'
set @ftpfile = @path + 'upload.ftp'

--FTP地址
set @batchcmd = '@echo open 192.168.1.150>' + @ftpfile
exec master.dbo.xp_cmdshell @batchcmd

--用户名
set @batchcmd = '@echo user testuser>>' + @ftpfile
exec master.dbo.xp_cmdshell @batchcmd

--密码 >>字符应紧接密码后面,否则空格会被当作密码
set @batchcmd = '@echo myftppwd>>' + @ftpfile
exec master.dbo.xp_cmdshell @batchcmd

set @batchcmd = '@echo prompt off >>' + @ftpfile
exec master.dbo.xp_cmdshell @batchcmd

set @batchcmd = '@echo lcd ' + @path + '. >>' + @ftpfile
exec master.dbo.xp_cmdshell @batchcmd

set @batchcmd = '@echo bin >>' + @ftpfile
exec master.dbo.xp_cmdshell @batchcmd

set @batchcmd = '@echo put ' + @filename + ' >>' + @ftpfile
exec master.dbo.xp_cmdshell @batchcmd

set @batchcmd = '@echo bye >>' + @ftpfile
exec master.dbo.xp_cmdshell @batchcmd

--开始上传
set @batchcmd = 'ftp -n -s:' + @ftpfile
exec master.dbo.xp_cmdshell @batchcmd

--删除upload.ftp
set @batchcmd = 'del /Q ' + @ftpfile
exec master.dbo.xp_cmdshell @batchcmd
 

你可能感兴趣的:(数据库)