每小时备份并传输 SQL-Server Express 数据库到FTP备份服务器的压缩文件。

4

我需要备份一个 SQL-Server Express 数据库,将其压缩并每小时传输到 FTP 服务器。

到目前为止,我能够创建备份,但是我无法使用命令行压缩它(我尝试过 7z),并且传输也不成功:

脚本文件 script.sql :

DECLARE @pathName NVARCHAR(512) 
SET @pathName = 'C:\prd-db-backup-' + replace(replace(replace(convert(varchar(19), getdate(), 126),'-',''),'T',''),':','') + '.bak' 
BACKUP DATABASE [Database] TO  DISK = @pathName WITH NOFORMAT, NOINIT,  NAME = N'Database-Full Database Backup', SKIP, NOREWIND, NOUNLOAD,  STATS = 10

批处理文件:

sqlcmd -S SQLSERVER -U user -P password -i script.sql
PROBLEM1: 7z a -tzip C:\prd-db-backup-%date%%time%.zip -i! C:\prd-db-backup-%DATE%%TIME%*.bak
FTP transfer: ?

感谢您的选择。

你的 bak 文件的文件名格式是什么? - rene
嗨,格式为heelp-prd-db-backup-20130729225109.bak,其中包括日期(YYYYMMDD)和时间(HHMMSS)。 - Patrick
1个回答

0
根据您的语言环境设置,您可能需要调整日期/时间解析。
rem get the last 10 chars  in either dd-mm-yyyy or mm-dd-yyyy 
set dtm=%DATE:~-10%

rem last 4 is the year
set yyyy=%dtm:~-4% 

set mm=%dtm:~4,2%
set dd=%dtm:~1,2%

set tim1=%TIME:.=%
set tim2=%tim1:,=%
rem lets just copy everyting from this date
sqlcmd -S SQLSERVER -U user -P password -i script.sql

7z a -tzip C:\prd-db-backup-%yyyy%%mm%%dd%%tim2%.zip -i! C:\prd-db-backup-%yyyy%%mm%%dd%*.bak

echo user your-ftp-username > ftpcmd.txt
echo pwd  your-ftp-password >> ftpcmd.txt
echo cd /ftp/dir/to/store >> ftmcmd.txt
echo put  C:\prd-db-backup-%yyyy%%mm%%dd%%tim2%.zip >> ftpcmd.txt
echo bye >> ftpcmd.txt

ftp -i -s:ftpcmd.txt your-ftp-server

嗨,谢谢。让我试试,然后我会给你一些反馈。问候, - Patrick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接