SQL server备份与恢复脚本(一):完整备份
2011-05-03 13:13
537 查看
以下脚本实现SQL server多个数据库的完整备份,备份文件名为:数据库_sqldb_日期.bak,并将所有备份文件进行压缩,压缩文件名为:wz_sqldb_日期.bak.rar,压缩完毕后自动删除原备份文件,并ftp上传至另一台服务器。整个脚本的运行过程自动写入tkblbackup.log中,方便进行错误分析。
@echo off
color 27
title backupdb
rem andyxu
rem http://andyxu.blog.51cto.com
set svr=sqldb
set svrrole=wz
set nowtime=%date:~0,10% %time%
set today=%date:~0,10%
if "%time:~0,1%" == " " (set nowh=%time:~1,1%) else (set nowh=%time:~0,2%)
set rar="c:\Program Files\WinRAR\rar.exe"
set rarlist="D:\script\rarlst.txt"
set ftplist="D:\script\ftplst.txt"
set baklog=D:\script\tkblbackup.log
set FtpSrv=xxx.xxx.xxx.xxx
set FtpPort=21
set FtpUser=ftpuser
set FtpPwd=ftppassword
@echo. >> %baklog%
@echo -------------------------------------------------- >> %baklog%
@echo %nowtime% BackupScript is starting....... >> %baklog%
::数据库备份语句,可添加多个数据库
for %%a in (sql1db sql2db log) do (
@echo %nowtime% BackupDB %%a is beginning....... >> %baklog%
@osql -s localhost -d master -E -Q "backup database %%a to disk='D:\backupdb\%%a_%svr%_%today%.bak' with init" >> %baklog%
echo D:\backupdb\%%a_%svr%_%today%.bak >> %rarlist%
)
::Rar files
%rar% a D:\backupdb\%svrrole%_%svr%_%today%.bak.rar @%rarlist% >> %baklog%
cd /d D:\backupdb
del *.bak
::Upload files by ftp
echo open %FtpSrv% %FtpPort% > %ftplist%
echo user %FtpUser% >> %ftplist%
echo %FtpPwd% >> %ftplist%
echo cd %svr% >>%ftplist%
echo bin >> %ftplist%
echo prompt >> %ftplist%
echo lcd E:\OSS\backupdb >>%ftplist%
echo put %svrrole%_%svr%_%today%.bak.rar >> %ftplist%
echo quit >> %ftplist%
echo bye >> %ftplist%
ftp -n -s:%ftplist% >> %baklog%
echo. > %rarlist%
@echo -------------------------------------------------- >> %baklog%
@echo. >> %baklog%
说明:
1. 由于我的备份策略是每天进行一次完整备份,每2个小时进行一次差异备份,故备份文件名只加了日期而没有加时间,并且需与差异备份分开写成两个脚本,至于差异备份和恢复脚本请看后面的文章。
2. 需将此脚本保存为bat文件,并放入到sql server的计划任务中,并根据需要调整运行的时间。
本文出自 “风中流浪” 博客,请务必保留此出处http://andyxu.blog.51cto.com/2050315/558255
@echo off
color 27
title backupdb
rem andyxu
rem http://andyxu.blog.51cto.com
set svr=sqldb
set svrrole=wz
set nowtime=%date:~0,10% %time%
set today=%date:~0,10%
if "%time:~0,1%" == " " (set nowh=%time:~1,1%) else (set nowh=%time:~0,2%)
set rar="c:\Program Files\WinRAR\rar.exe"
set rarlist="D:\script\rarlst.txt"
set ftplist="D:\script\ftplst.txt"
set baklog=D:\script\tkblbackup.log
set FtpSrv=xxx.xxx.xxx.xxx
set FtpPort=21
set FtpUser=ftpuser
set FtpPwd=ftppassword
@echo. >> %baklog%
@echo -------------------------------------------------- >> %baklog%
@echo %nowtime% BackupScript is starting....... >> %baklog%
::数据库备份语句,可添加多个数据库
for %%a in (sql1db sql2db log) do (
@echo %nowtime% BackupDB %%a is beginning....... >> %baklog%
@osql -s localhost -d master -E -Q "backup database %%a to disk='D:\backupdb\%%a_%svr%_%today%.bak' with init" >> %baklog%
echo D:\backupdb\%%a_%svr%_%today%.bak >> %rarlist%
)
::Rar files
%rar% a D:\backupdb\%svrrole%_%svr%_%today%.bak.rar @%rarlist% >> %baklog%
cd /d D:\backupdb
del *.bak
::Upload files by ftp
echo open %FtpSrv% %FtpPort% > %ftplist%
echo user %FtpUser% >> %ftplist%
echo %FtpPwd% >> %ftplist%
echo cd %svr% >>%ftplist%
echo bin >> %ftplist%
echo prompt >> %ftplist%
echo lcd E:\OSS\backupdb >>%ftplist%
echo put %svrrole%_%svr%_%today%.bak.rar >> %ftplist%
echo quit >> %ftplist%
echo bye >> %ftplist%
ftp -n -s:%ftplist% >> %baklog%
echo. > %rarlist%
@echo -------------------------------------------------- >> %baklog%
@echo. >> %baklog%
说明:
1. 由于我的备份策略是每天进行一次完整备份,每2个小时进行一次差异备份,故备份文件名只加了日期而没有加时间,并且需与差异备份分开写成两个脚本,至于差异备份和恢复脚本请看后面的文章。
2. 需将此脚本保存为bat文件,并放入到sql server的计划任务中,并根据需要调整运行的时间。
本文出自 “风中流浪” 博客,请务必保留此出处http://andyxu.blog.51cto.com/2050315/558255
相关文章推荐
- SQL server备份与恢复脚本
- SQL server备份与恢复脚本(三):还原
- SQL SERVER 备份恢复误区之‘在破坏日志备份链之后,需要一个完整备份来重新开始日志链’
- sql server 数据库模型 备份 恢复 总结 备份脚本
- Sql server 2008数据库误删的恢复(利用日志和一个完整备份)
- Sql Server 备份恢复脚本
- SQL server备份与恢复脚本(二):差异备份
- 【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个文件
- 【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个文件
- [置顶]SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]
- SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现) [原创]
- sql server 数据库模型 备份 恢复 总结 备份脚本
- SQL SERVER完整、差异和事务日志备份及还原(脚本和GUI实现)
- SQL Server [备份恢复]:完整备份,差异备份或事务日志备份,尾部日志备份
- 【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个页面
- sqlserver 完整备份、差异备份、日志备份与恢复脚本
- 【SQL Server备份恢复】提高恢复速度:通过数据库完整备份,来恢复损坏的某个页面
- PB中对SQL SERVER 2K 数据库的创建、备份与恢复
- SQL Server远程定时备份数据库脚本分享
- SQL Server中的事务日志管理(5/9):完整恢复模式里的日志管理