微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SqlServer 2008 express的自动备份实现

          一个项目中用到的数据库sqlserver 2008 express 。可没想到express版本的功能有些限制,此前一直都不知道啊。百度百科可以看到它的限制:


“1.数据库的大小限制:sql Server 2005 Express 和sql Server 2008 Express 数据库的大小限制最大为 4GB,最新版本的sql Server 2008 R2 Express 数据库的大小限制最大为 10G。这个大小的限制只有在数据文件上,交易记录档则不受此限。 2.只能使用一个 cpu 来运算,这在多个 cpu 的电脑上会造成浪费。
3.可使用的存储器量最高只有 1GB。
4.没有 sql Agent,若要做调度服务必须自己写程序。”

所以,由于没有sql代理(sqlSERVERAGENT)服务,就没有办法通过新建作业的方式来做数据库备份了。如果不想重装数据库的话可以试试以下方法。思路如下:
1、写一个sql 脚本来作数据库备份。
例如:backup.sql ,我们把它放在 F:\Database_Backup下,以后的备份文件也放在这个目录下。
  1. GO   
  2. DECLARE   
  3. @backupTime VARCHAR(20)  
  4. @fileName VARCHAR(1000)    
  5. SELECT  
  6.  @backupTime=(CONVERT(VARCHAR(8), GETDATE(), 112) +REPLACE(VARCHAR(5), 114), ':'''))    
  7.  @fileName='F:\Database_Backup\DB_'+@backupTime+'.bak'  
  8. backup database dbname to disk=@fileName  
dbname就是你的数据库名称了,备份的文件名形如 DB_201302252140.bak。

2、写一个批处理文件,执行此sql脚本。
例如:backup_database.bat ,我们也把它放在 F:\Database_Backup下。
[plain]  copy
    d:
    cd F:\Database_Backup
    osql -S .\sqlexpress -d dbname -U username -P password -i backup.sql  

3、新建一个Windows计划任务,定期(比如每天)执行此批处理命令。
选择管理工具里的“计划任务”


选择“创建基本任务”


输入任务名称和描述


选择执行时间


选择操作为“启动程序”


这里的程序或脚本就选择我们建好的 backup_database.bat


          最后确定即可。

      至于删除过期的备份文件,我们也可以通过任务计划来完成。forfiles命令,可以实现批量删除文件用法可以自行百度。我们写一个批处理文件delete_bakFile.bat内容如下:

[plain]  view plain copy
    forfiles /p F:\Database_Backup /m *.bak /d -7 /c "cmd /c del /f @path"  

           在这里,我们删除7天以前的备份,同样地新建一个任务计划,将它执行的程序指向这个bat 即可,执行时间可以指定为一个月一次或一周一次等。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐