教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 范文大全 > 文秘资料 >

SQL Server 2005 Express自动备份及删除旧备份文件

来源:网络收集 时间:2026-09-08
导读: 问题提出 当越来越多的多商业应用采用SQl Server 2005 Express 版本作为后台数据库的时候,我们必须确保能顺利的备份系统以及运行在实例上的用户数据库。不幸的是,SQl Server 2005 Express 版本没有SQL代理,也就不能使用SQL代理来创建可以备份所有数据库的

问题提出

当越来越多的多商业应用采用SQl Server 2005 Express 版本作为后台数据库的时候,我们必须确保能顺利的备份系统以及运行在实例上的用户数据库。不幸的是,SQl Server 2005 Express 版本没有SQL代理,也就不能使用SQL代理来创建可以备份所有数据库的数据库维护计划。那么对于SQl Server 2005 Express 版本,我们如何像其它版本一样来备份系统和数据呢?

专家解答

我们可以通过Windows中的任务管理,结合VBSript和TSQL来达到在SQl Server 2005 Express 版本中自动备份系统和数据的目的。

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

第一步-创建TSQL脚本

以下的TSQL脚本将生成一个数据库备份文件,同时考虑到生成的日期和时间,其格式类似于数据库维护计划生成的备份文件。我们将之保存为后缀名.sql的文件:E:\SQL_Backup\scripts\backupDB.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_Backup\scripts\LOG.txt的空文件来保存删除文件的日志。

2. 将以下的脚本保存为E:\SQL_Backup\scripts\deleteBAK.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 & "\scripts\LOG.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 & http://www.77cn.com.cn

'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的批处理命令文件

我们需要创建一个批处理命令文件,用来调用TSQL脚本和VBSript脚本。批处理命令文件的内容是对sqlcmd.exe的简单调用、以及使用wscript.exe或者简单的调用VBSript文件。将以下内容保存为E:\SQL_Backup\scripts\databaseBackup.cmd,这就是我们需要的批处理命令。

REM Run TSQL Script to backup databases

sqlcmd -S-E -i"E:\SQL_Backup\scripts\backupDB.sql"

REM Run database backup cleanup script

E:\SQL_Backup\scripts\deleteBAK.vbs

第四步-在Windows任务计划中创建任务

在windows任务计划中创建一个日常任务,用之来调用之前创建的批处理命令。任务计划的位置如下:开始菜单 -> 所有程序 -> 附件 -> 系统工具 ->任务计划。

因为我们运行TSQL脚本时开启了w …… 此处隐藏:2869字,全部文档内容请下载后查看。喜欢就下载吧 ……

SQL Server 2005 Express自动备份及删除旧备份文件.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/fanwen/1993476.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)