首页 ┆ 网站地图 ┆ 在线留言 ┆ 游戏资讯 ┆ 资源下载 ┆ 端午节祝福 ┆ 迅雷在线影视 ┆淘宝手机在线充值 ┆淘宝游戏点卡充值 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页>数据库>SQL数据库>如何在sql数据库中自动备份数据并删除旧备份文件
如何在sql数据库中自动备份数据并删除旧备份文件
来源: 发布时间:2008-11-01 发布人: 浏览: 人次   字体: [ ]  

     SQlServer 2005 Express 版本没有SQL代理,也就不能使用SQL代理来创建可以备份所有数据库的数据库维护计划。那么对于SQl Server 2005 Express 版本,我们如何像其它版本一样来备份系统和数据呢?
我们可以通过Windows中的任务管理,结合VBSript和TSQL来达到在SQlServer 2005 Express 版本中自动备份系统和数据的目的。

  注意:所有的文件都必须保存在如下文件夹:E:SQL_Backupscripts。这个目录可以改变。但在该例中设定的是这个目录。如果将文件保存到其它目录,必须相应的更新脚本中的目录设置。

  第一步-创建TSQL脚本

  以下的TSQL脚本将生成一个数据库备份文件,同时考虑到生成的日期和时间,其格式类似于数据库维护计划生成的备份文件。我们将之保存为后缀名.sql的文件:E:SQL_BackupscriptsbackupDB.sql。该文件将在批处理命令文件中使用sqlcmd调用。

DECLARE @dateString CHAR(12), @dayStr CHAR(2), @monthStr CHAR(2), @hourStr CHAR(2), @minStr CHAR(2)
  --month variable
  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))
  --day variable
  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))
  --hour variable
  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))
  --minute variable
  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))
  --name variable based on time stamp
  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 NOT IN ('TEMPDB')
  WHILE @IDENT IS NOT NULL
  BEGIN
  SELECT @DBNAME = NAME FROM SYS.DATABASES WHERE database_id = @IDENT
  /*Change disk location here as required*/
  SELECT @SQL = 'BACKUP DATABASE '+@DBNAME+' TO DISK = ''E:SQL_Backup'+@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

  第二步-创建VBSript文件

  接下来我们需要创建一个VBSript文件,它将负责清理旧的数据库备份文件。该脚本同时也将生成日志文件,记录数据库备份文件的变化。

  1. 你需要创建一个名为E:SQL_BackupscriptsLOG.txt的空文件来保存删除文件的日志。

  2. 将以下的脚本保存为E:SQL_BackupscriptsdeleteBAK.vbs。 

On Error Resume Next
  Dim fso, folder, files, sFolder, sFolderTarget
  Set fso = CreateObject("Scripting.FileSystemObject")
  'location of the database backup files
  sFolder = "E:SQL_Backup"
  Set folder = fso.GetFolder(sFolder)
  Set files = folder.Files
  'used for writing to textfile - generate report on database backups deleted
  Const ForAppending = 8
  'you need to create a folder named “scripts” for ease of file management &
  'a file inside it named “LOG.txt” for delete activity logging
  Set objFile = fso.OpenTextFile(sFolder & "scriptsLOG.txt", ForAppending)
  objFile.Write "================================================================" & VBCRLF & VBCRLF
  objFile.Write " DATABASE BACKUP FILE REPORT " & VBCRLF
  objFile.Write " DATE: " & FormatDateTime(Now(),1) & "" & VBCRLF
  objFile.Write " TIME: " & FormatDateTime(Now(),3) & "" & VBCRLF & VBCRLF
  objFile.Write "================================================================" & VBCRLF
  'iterate thru each of the files in the database backup folder
  For Each itemFiles In files
  'retrieve complete path of file for the DeleteFile method and to extract
  'file extension using the GetExtensionName method
  a=sFolder & itemFiles.Name
  'retrieve file extension
  b = fso.GetExtensionName(a)
  'check if the file extension is BAK
  If uCase(b)="BAK" Then
  'check if the database backups are older than 3 days
  If DateDiff("d",itemFiles.DateCreated,Now()) >= 3 Then
  'Delete any old BACKUP files to cleanup folder
  fso.DeleteFile a
  objFile.WriteLine "BACKUP FILE DELETED: " & a
  End If
  End If
  Next
  objFile.WriteLine "================================================================" & VBCRLF & VBCRLF
  objFile.Close
  Set objFile = Nothing
  Set fso = Nothing
  Set folder = Nothing
  Set files = Nothing

  第三步-创建调用TSQL脚本和VBSript的批处理命令文件


共2页: 上一页 1 [2] 下一页
相 关 文 章   发布商链接
·实现sql2005导出表或视图中的数据为h...
·实例讲解将当前库所有表的smalldatet...
·SQl语句中newid与union 发生冲突的解...
·如何用SQL语句查询每个分组的前N条记...
·sql精确查询2个时间范围内的记录,有...
·SQL2005利用xml在指定分隔符的情况下...
·如果SQL Server2000安装失败了该怎么...
·为什么安装SQL Server软件会要求关闭...
·如何安装Analysis Services?
·如何知道计算机运行的各种实例的安装...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)
网名: 验证码:  【所有评论】【↑返回顶部
评 分: 12 345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·SQL数据库实现用SQL语句根据...
·SqlServer 2005 Express的配...
·sql排序规则的简介及其修改操
·如何用sql语句为字段添加和去
·sqlserver数据库日志文件压缩
·sql语句获得数据库某表字段的
·ISNUMERIC函数介绍及其要注意
·SQLServer2005导入xml文件实...
·SQL Server2005中删除表中重...
·如何手工启动SQLServer的全文
·sql删除数据库中的所有表语句
·SqlServr利用触发器来控制某...
·SQLServer常用日期格式转换方
·用sql实现查询重复记录的代码
·SQLServer2005分解导入xml文...
热 门 文 章
·图解SQL2008安装向导的使用
·实现Excel数据导入到SQL2005...
·SQLServer常用日期格式转换方...
·MS sql安装时“无法在COM+目...
·sql语句联合删除多个表技巧
·sql删除数据库中的所有表语句
·Sql Server端口连接的问题
·如何在SQL Server中得到自动...
·sql排序规则的简介及其修改操...
·SQL Server2005中删除表中重...
·分析SQL2005最新高效分页方法
·小解sqlServer中临时表及表变...
·用sql实现查询重复记录的代码
·MS SQL2005无法远程连接问题...
·如何修改sqlserver数据库名称
网站首页 - 关于本站 - 加入收藏 - 网站地图 - 友情连接 - 在线留言 - 联系我们 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .