SQL server Express自动化备份及删除备份文件

需求分析:因为公司遵从正版软件的许可,本着节约成本的优良传统,故没有使用什么盗版软件,用的是微软的SQL Server 2005 Express。因为对数据十分的重视,故需要每天对数据库进行备份,而又要删除两个星期之前的备份数据,经查阅资料,得出如下一套方案,还望各路大侠指点一二:

现在的环境是一台安装SQL Server 2005 Express和Microsoft SQLServer 2005 Management Studio Express 图形化管理工具的服务器。

现在在C盘下创建如下两个文件夹:C:\Script和C:\DB_Backup,Script下用于存放脚本文件,而DB_Backup下用于存放备份数据。

1、C:\Script文件夹下有下面三个文件:Schedule.cmd,DeleteDB.vbs 和BackupDB.sql

2、BackupDB.sql 有如下内容:

DECLARE @dateString CHAR(12), @dayStr CHAR(2), @monthStr CHAR(2), @hourStr CHAR(2), @minStr CHAR(2)

--定义月变量

IF (SELECT LEN(CAST(MONTH(GETDATE()) AS CHAR(2))))=2

  SET @monthSTR=CAST(MONTH(GETDATE()) AS CHAR(2))

ELSE

  SET @monthSTR= '0' + CAST(MONTH(GETDATE()) AS CHAR(2))

--定义天变量

IF (SELECT LEN(CAST(DAY(GETDATE()) AS CHAR(2))))=2

  SET @daySTR=CAST(DAY(GETDATE()) AS CHAR(2))

ELSE

  SET @daySTR='0' + CAST(DAY(GETDATE()) AS CHAR(2))

--定义小时变量

IF (SELECT LEN(DATEPART(hh, GETDATE())))=2

  SET @hourStr=CAST(DATEPART(hh, GETDATE()) AS CHAR(2))

ELSE

  SET @hourStr= '0' + CAST(DATEPART(hh, GETDATE()) AS CHAR(2))

--定义分变量

IF (SELECT LEN(DATEPART(mi, GETDATE())))=2

  SET @minStr=CAST(DATEPART(mi, GETDATE()) AS CHAR(2))

ELSE

  SET @minStr= '0' + CAST(DATEPART(mi, GETDATE()) AS CHAR(2))

--定义基于当前时间戳变量

SET @dateString=CAST(YEAR(GETDATE()) AS CHAR(4)) + @monthStr + @dayStr + @hourStr + @minStr

--=================================================================

DECLARE @IDENT INT, @sql VARCHAR(1000), @DBNAME VARCHAR(200)

SELECT @IDENT=MIN(database_id) FROM SYS.DATABASES WHERE [database_id] > 0 AND NAME = 'master'

BEGIN

  SELECT @DBNAME = NAME FROM SYS.DATABASES WHERE database_id = @IDENT

 SELECT @SQL = 'BACKUP DATABASE '+@DBNAME+' TO DISK = ''D:\SQLTEST\'+@DBNAME+'_db_' + @dateString +'.BAK'' WITH INIT'

  EXEC (@SQL)

  SELECT @IDENT=MIN(database_id) FROM SYS.DATABASES WHERE [database_id] > 0 AND database_id>@IDENT AND NAME NOT IN ('TEMPDB')

END

3、DeleteDB.vbs下有如下内容:

On Error Resume Next  

Dim fso, folder, files, sFolder, sFolderTarget    

Set fso = CreateObject("Scripting.FileSystemObject")  

'保存数据库备份文件路径

sFolder = "D:\SQLTEST\"

Set folder = fso.GetFolder(sFolder)  

Set files = folder.Files    

'用于写入文本文件,并生成删除数据库备份报告

Const ForAppending = 8

'在scripts下创建一个空txt文件:Log.txt

Set objFile = fso.OpenTextFile(sFolder & "\Log.txt", ForAppending)

objFile.Write "================================================================" &

VBCRLF & VBCRLF

objFile.Write "                     数据库备文件报告                " & VBCRLF

objFile.Write "                     日期: " &    FormatDateTime(Now(),1)   & "" &

VBCRLF

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/database/SQLServer/

objFile.Write "                     时间: " &    FormatDateTime(Now(),3)   & "" &

VBCRLF & VBCRLF

objFile.Write "================================================================" &

VBCRLF

'枚举备份文件目录文件

For Each itemFiles In files

  '获取要删除文件的文件名

  a=sFolder & itemFiles.Name

  '获取文件扩展名

  b = fso.GetExtensionName(a)

      '检查扩展名是否为BAK

      If uCase(b)="BAK" Then

          '检查数据库备份是否为14天以前

          If DateDiff("d",itemFiles.DateCreated,Now()) >= 14 Then

              '删除旧备份

              fso.DeleteFile a

              objFile.WriteLine "备份文件已删除: " & a

          End If

     End If

Next  

objFile.WriteLine "================================================================" &

VBCRLF & VBCRLF

objFile.Close

Set objFile = Nothing

Set fso = Nothing

Set folder = Nothing

Set files = Nothing

4、在D:\SQLTEST\下创建一个文本文件:Log.txt,用于保存删除日志

5、Schedule.cmd有如下内容:

cd C:\Program Files\Microsoft SQL Server\90\Tools\Binn\

sqlcmd -S .\SQLEXPRESS -E -i"d:\SQLTEST\BackupDB.sql"

C:\Script\ DeleteDB.vbs

6、下面只要在计划任务里设置定时运行Schedule.cmd命令即可。

参考文章:http://www.mssqltips.com/sqlservertip/1486/automate-sql-server-express-backups-and-deletion-of-older-backup-files/

时间: 2024-10-07 05:26:22

SQL server Express自动化备份及删除备份文件的相关文章

《SQL Server企业级平台管理实践》读书笔记——关于SQL Server数据库的备份方式

原文:<SQL Server企业级平台管理实践>读书笔记--关于SQL Server数据库的备份方式 数据备份一直被认为数据库的生命,也就是一个DBA所要掌握的主要技能之一,本篇就是介绍SQL Server备份原则,SQL Server数据库分为数据文件和日志文件.为了使得数据库能够恢复一致点,备份不仅需要拷贝数据数据文件里的内容,还要拷贝日志文件里的内容.那么根据每次备份的目标不同,我们可以将备份分为数据备份和日志备份. 数据备份的范围可以是完整的数据库.部分数据库.一组文件或文件组.所以根

MSSQL · 最佳实践 · SQL Server三种常见备份

摘要 本期月报是SQL Server数据库备份技术系列文章的开篇,介绍三种常见的SQL Server备份方法的工作方式.使用T-SQL语句和使用SSMS IDE创建备份集三个层面,介绍SQL Server的三种常见备份的工作原理和使用方法.三种常见的备份包括: 数据库完全备份(Full Backup) 数据库日志备份(Transaction Log Backup) 数据库差异备份(Differential Backup) 备份的重要性 在开始分享之前,我们首先来看看数据库备份的重要性.进入

SQL Server 数据库使用备份还原造成的孤立用户和对象名‘xxx’无效的错误的解决办法

server|备份|错误|对象|解决|数据|数据库 介绍SQL Server 数据库使用备份还原造成的孤立用户和对象名'xxx'无效的错误的解决办法          在使用数据库的过程中,经常会遇到数据库迁移或者数据迁移的问题,或者有突然的数据库损坏,这时需要从数据库的备份中直接恢复.但是,此时会出现问题,这里说明几种常见问题的解决方法.一.孤立用户的问题比如,以前的数据库的很多表是用户test建立的,但是当我们恢复数据库后,test用户此时就成了孤立用户,没有与之对应的登陆用户名,哪怕你建立

SQL Server Express 静默安装操作方法

  沉默的SQL Server 2005安装是可能的两个步骤: 1)创建一个setup.ini文件 的SQL Server光盘中包含的模板文件称为template.ini.在此基础上创建另一个需要的".ini文件",该文件包含一个单一的[Options]节包含多个参数,每个涉及到不同的功能或配置设置. setup.ini文件结构(一般设置结构如下) 其中红色框的设置是用来卸载组建的,若在安装失败的时候就要先卸载这些组件,安装的时候不要"REMOVE=ALL" 2)运

对 sql server 数据库的备份进行加密

原文:对 sql server 数据库的备份进行加密 嗯,最近在研究数据库备份相关的东西,考虑到应该为数据库备份加个密,就准备从网上搜索一下看看有什么好办法,没想到还挺乱... 首先,我从网上搜到的,对数据库备份加密的方法,主要有三种:   1.在使用 BACKUP 语句时,添加 PASSWORD 参数[此方法适用于 sql server 2012 以前的版本(不包含 2012)] 不过呢,其实这个 PASSWORD 参数的加密,并不是我们想象中的对数据完整的加密. 根据 MSDN 中的介绍:h

MSSQL-最佳实践-SQL Server三种常见备份

摘要 本期月报是SQL Server数据库备份技术系列文章的开篇,介绍三种常见的SQL Server备份方法的工作方式.使用T-SQL语句和使用SSMS IDE创建备份集三个层面,介绍SQL Server的三种常见备份的工作原理和使用方法.三种常见的备份包括:数据库完全备份(Full Backup)数据库日志备份(Transaction Log Backup)数据库差异备份(Differential Backup) 备份的重要性 在开始分享之前,我们首先来看看数据库备份的重要性.进入DT时

SQL Server Express 数据库自动部署问题及解决

express|server|解决|数据|数据库|问题 这几天做了一个程序,VS 2005 + SQL Server Express,仔细查阅文档,发现 SQL Server Express 支持 XCOPY 部署方式,也就是说,只要目标计算机有了 SQL Server Express,那么只需要把数据库拷贝过去,可以在程序的同一个目录中,然后在连接字符串中配置 AttachDBFileName 参数即可.数据库会自动挂接到 SQL Server Express 中,运行完后自动 Deattch

(转)Inno Setup Script Silently install .NET 3.5 and Sql Server Express

Disclaimer: Some of this s-c-r-i-p-t is adapted from an example I found on another website, I have been unable to retrace the original, if you recognise some of this work as your own please contact me and I would be happy to credit you. There are a f

SQL Server系统数据库备份最佳实践

原文:SQL Server系统数据库备份最佳实践 首先了解主要的系统数据库: master 包含登录信息和其他数据库的核心信息 msdb 存储作业.操作员.警报.备份还原历史.数据库邮件信息等等. model 所有新数据库的模型,如果希望新数据库都有某些对象,可以在这里创建. tempdb sql server重启时重建,所以不需要备份 除了以上四种,其实还有一个数据库:Resource 从2005就引入的,一个只读.隐藏的数据库,包含所有在sql server中的系统对象.由于SQL SERV