环境:SQL Server 2005

任务:

1,每日凌晨1点给本地sql server做本地完整备份,且只保留7天的本地备份;

2,每日凌晨5点将本地的备份打包上传到存储服务器。

思路:

1,sql server2005不支持SQL Server2000的sqlmaint命令,所以,需要通过数据库维护计划进行备份,而不能一步成型的写bat脚本;

2,备份地址先保存到D:\dbbak\sqltemp,并给每个数据库建立子目录,凌晨1点执行;

3,写批处理,将sqltemp目录下的文件保留一个,并将这个文件rar打包放到D:\dbbak\data目录,并保存七天的备份文件,凌晨3点执行;

4,写一个wsf,将每日data目录的压缩包文件上传到存储服务器,凌晨5点执行。

操作步骤:

1,给SQL Server每日本地完整备份

1)打开management Studio-》管理-》右键 维护计划-》维护计划向导

2)按需选择自己的备份计划,本例备份完整的数据库,并存放在D:\dbbak\sqltemp,并给每个数据库建立子目录,备份文件名为bak,每日1点备份

3) 开启sqlagent代理,测试一下,看是否正常。

2,创建脚本dbbackup.bat,实现思路3,内容如下:

@echo cd \ D: set catalog=D:\dbbak : 保留一天的备份文件 @for /f %%i in ('dir /b/ad %catalog%\sqltemp') do (@for /f "skip=1" %%f in ('dir /b/o-n %catalog%\sqltemp\%%i') do del /s/q %catalog%\sqltemp\%%i\%%f) : 压缩sqltemp子目录文件到data目录 @for /f %%i in ('dir /b/ad %catalog%\sqltemp') do (@for /f %%f in ('dir /b %catalog%\sqltemp\%%i') do (if not exist %catalog%\data\%%i mkdir %catalog%\data\%%i) & rar a -inul -m5 -r -ep1 %catalog%\data\%%i\%%f.rar %catalog%\sqltemp\%%i\%%f) : data目录(本地备份压缩文件)保留7天的备份 @for /f %%i in ('dir /b/ad %catalog%\data') do (@for /f "skip=7" %%f in ('dir /b/o-n %catalog%\data\%%i') do del /s/q %catalog%\data\%%i\%%f)

3,创建db-backup.wsf,实现思路4,内容如下:

<job> <script language="VBScript"> Function execMethod Dim WshShell, oExec WScript.echo "run method" Set WshShell = CreateObject("WScript.Shell") Set oExec = WshShell.Exec("calc") Do While oExec.Status = 0 WScript.Sleep 100 Loop WScript.Echo oExec.Status end function '文件根目录,压缩包目录,FTP命令文件,FTP目标IP function runMethod (folderspec,rarpath,ftpfile,ftpaddr) Dim sdate,datedir,dirname,xcopyDate ' get date path sdate = dateadd("d",d,date) datedir = year(sdate) & right("0" & month(sdate),2) & right("0" & day(sdate),2) xcopyDate = right("0" & month(sdate),2) & "-" & right("0" & day(sdate),2) & "-" & year(sdate) ' if hasdate="TRUE" then ' dirname = filedir & "\" & datedir ' else ' dirname = filedir ' end if Dim fso, f, f1, fc, foldname ,batfile , listname , ftplogfile Dim runstr batfile= rarpath & "runbat.bat" listname = rarpath & "log_" & datedir & ".log" ftplogfile = rarpath & "log_" & datedir & "ftp.log" Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder(folderspec) Set fc = f.SubFolders Set fbat= fso.CreateTextFile(batfile, True) Set flist =fso.CreateTextFile(listname, True) Set fftp=fso.CreateTextFile(ftplogfile, True) Dim i,maxi,alli maxi=1 i=0 alli=0 For Each f1 in fc i=i+1 alli=alli+1 foldname = f1.name flist.WriteLine ( alli & ".. " & foldname & chr(13) ) 'fbat.WriteLine (" rar.exe a " & rarpath & foldname & "_" & datedir &".rar " & folderspec & "\" & foldname & chr(13) ) 'following: 修改为每天上传,并且只上传一个 fbat.WriteLine ("xcopy " & folderspec & foldname & "\*.rar /D:" & xcopyDate &" " & rarpath) 'fbat.WriteLine ("xcopy " & folderspec & foldname & "\*.rar" &" " & rarpath) fbat.WriteLine ("echo " & alli & "------------------- " & foldname & ">>" & ftplogfile & chr(13)) if i=maxi then fbat.WriteLine (" ftp -s:" & ftpfile & " " & ftpaddr & ">>" & ftplogfile & chr(13) ) fbat.WriteLine (" del *.rar" & chr(13) ) i=0 end if Next flist.WriteLine ("total: " & alli & chr(13) ) if i>0 then fbat.WriteLine (" ftp -s:" & ftpfile & " " & ftpaddr & chr(13) ) fbat.WriteLine (" del *.rar" & chr(13)) end if set fso=nothing set f1=nothing set f=nothing set fc=nothing set fbat=nothing set flist=nothing set fftp = nothing Dim oShell Set oShell = WScript.CreateObject ("WSCript.shell") runstr = "cmd /K cd " & rarpath runstr = runstr & " & runbat.bat " ' runstr = runstr & " & ftp -s:" & ftpfile & " " & ftpaddr ' runstr = runstr & " & del " & rarpath & & foldname & ".rar" runstr = runstr & " & exit" ' WScript.Echo runstr oShell.run runstr Set oShell = Nothing end function 'run '文件根目录,压缩包目录,FTP命令文件,FTP目标IP call runMethod ("D:\dbbak\data\","C:\job\dbback_up\db_backup\","c:\job\dbback_up\ftp.conf","11.11.13.14") </script> </job>

ftp.conf内容:

username password cd db59237 bin prompt hash mput *.rar bye

另记得建一个db_backup子目录,用于存放日志。

4,创建计划任务,每日凌晨3点执行dbbackup.bat,每日凌晨5点执行db-backup.wsf


对于sql2000的备份,可以不依赖sql agent,只是创建一个维护计划,并直接在批处理文件中通过sqlmaint方式调用即可。

sql2000 dbbackup.bat内容:

@echo cd \ D: set catalog=D:\sqlbak if not exist %catalog%\sqltemp mkdir %catalog%\sqltemp "C:\Program Files\Microsoft SQL Server\MSSQL\Binn\sqlmaint.exe" -PlanName data -BkUpDB %catalog%\sqltemp -BkUpMedia DISK -CrBkSubDir rd /s/q %catalog%\sqltemp\msdb @for /f %%i in ('dir /b/ad %catalog%\sqltemp') do (@for /f "skip=1" %%f in ('dir /b/o-n %catalog%\sqltemp\%%i') do del /s/q %catalog%\sqltemp\%%i\%%f) @for /f %%i in ('dir /b/ad %catalog%\sqltemp') do (@for /f %%f in ('dir /b %catalog%\sqltemp\%%i') do (if not exist %catalog%\data\%%i mkdir %catalog%\data\%%i) & rar a -inul -m5 -r -ep1 %catalog%\data\%%i\%%f.rar %catalog%\sqltemp\%%i\%%f) @for /f %%i in ('dir /b/ad %catalog%\data') do (@for /f "skip=7" %%f in ('dir /b/o-n %catalog%\data\%%i') do del /s/q %catalog%\data\%%i\%%f)      

【Vegas原创】SQL Server 2005部署备份任务相关推荐

  1. SQL Server 2005异地备份

    本方案采用备份至本地然后copy到文件服务器的方法. SQL server 2005打了sp2的补丁后好像存储过程xp_cmdshell是不能直接用的 1. 显示高级选项(仅需执行一次) EXEC s ...

  2. 修改SQL Server 2005 数据库文件名字

    对于SQLServer 2005的数据库文件名字的修改.不多说,见图: 对于数据库名的更改直接选中要修改的数据库,F2,你懂的,不懂的可以去屎了.....0.0 下面要修改数据库的文件名 原理就是利用 ...

  3. 关于SQL Server 2005 的自动远程数据库备份

    关于SQL Server 2005 的自动远程数据库备份 原文:(原创)关于SQL Server 2005 的自动远程数据库备份 由于项目需要,需要对目标服务器上的数据库每天进行备份并转移,查阅网上的 ...

  4. 如何在SQL Server 2005中使用作业实现备份和特定删除

    步骤如下:   1.需要启动服务Sql Server Agent(sql server 代理)   2.新建作业,名称为backupDatabase   3.选择步骤,点击"新建" ...

  5. [轉]SQL Server 2005备份维护计划

      1)定期完成数据库的完全备份或差异备份. 2)定期清理备份文件,因为存储空间有限,可能只需要保存一个时期段内的文件(比如一周内或一月内). 而如何做到这两点呢?笔者相信在SQL SERVER200 ...

  6. SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法此信息转载自BlueSky's Blog,www.heuupk.com,为尊重无价的知识请保留此版权信息。...

    SQL Server 2005"备份集中的数据库备份与现有的数据库不同"解决方法 以前一直使用SQL Server2000,现在使用SQL Server2005,就在现在的项目中使 ...

  7. iis6上安装PHP5.3.2及连接到SQL Server 2005/2008的设置(原创)

    iis6上安装PHP5.3.2及连接到SQL Server 2005/2008的设置(原创) 新增一台win2003 server系统的服务器.以前其他的服务器上使用php5.0/5.1,数据库是SQ ...

  8. [SQL SERVER 2005]数据库差异备份及还原

    因为之前遇到还原差异备份,最开始遇到SQLServer报错:"无法还原日志备份或差异备份,因为没有文件可用于前滚".查阅很多资料后,终于得到解决.收集整理成这篇随笔. 问题原因:出 ...

  9. sql server 2005 通过代理定时备份数据库

    sql server 2005 自带了一个备份数据库的工具,叫"SQL SERVER 代理",我们可以通过他来进行数据库的定时备份,具体流程如下: 1.要启动 sqlserver ...

最新文章

  1. [推荐].NET开发人员必备的10个Visual Studio Add-Ins
  2. linux系统切换用户
  3. 电脑屏幕出现彩色条纹_电脑屏幕出现条纹
  4. 第一篇|腾讯开源项目盘点:WeUI,WePY,Tinker,Mars等
  5. 南京高中计算机老师,南京市教育局召开中小学教师信息技术应用能力提升工程2.0市级专家组工作会议...
  6. 程序员最讨厌的9句话
  7. 里面怎么打中文字_“标题党”英语应该怎么翻译?不要翻译成“title party”!...
  8. MOGRE学习(三) Mogre的SceneNode及Entity
  9. Python:list数组元素同一转换类型
  10. 关于如何安装cocoapods
  11. 还在用Json-lib?面对疾风吧!
  12. Maven—Eclipse设置Maven项目JDK版本
  13. 自动驾驶汽车传感器融合系统及多传感器数据融合算法浅析
  14. 微信小程序如何引入iconfont阿里巴巴素材库的图标
  15. IO流和NIO流的区别
  16. Mybatis 从入门到入魔
  17. lnmp下配置PHP虚拟主机vhost
  18. 在你的时区里,一切准时-很美的英文诗
  19. 设备跟服务器对接需要什么文档,『OneNET设备云平台』云平台对接服务_智能设备...
  20. 电商平台“二选一” 最后买单的却是商家和消费者

热门文章

  1. BroadcastReceiver广播
  2. Android-- Toast通知的用法
  3. 难过的时候看一看 再坏能有多坏!
  4. Gridview创建行列 合并列、行类
  5. 安装php的mongodb扩展
  6. check_http检查http服务
  7. ubuntu 10.10下面添加samba实现和windows共享文件
  8. 文件那些事儿之一(初稿)
  9. 微软 Exchange Autodiscover 协议存bug,数十万域凭据可遭泄露
  10. 从 CVE-2020-1048 到 CVE-2020-17001:Windows打印机模块中多个提权漏洞分析