技术分享
SQL Server 2005数据库定期备份和删除历史备份记录
2021-04-23
在SQL Server 2005数据库中实现自动备份的具体步骤:
1、打开SQL Server Management Studio
2、启动SQL Server代理
3、点击作业->新建作业
4、"常规"中输入作业的名称
5、新建步骤,类型选T-SQL,在下面的命令中输入下面语句
DECLARE @strPath NVARCHAR(200)
set @strPath = convert(NVARCHAR(19),getdate(),120)
set @strPath = REPLACE(@strPath, ':' , '.')
set @strPath = 'D:\bak\' + 'databasename'+@strPath + '.bak'
BACKUP DATABASE [databasename] TO DISK = @strPath WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT
(D:\bak\改为自己的备份路径,databasename修改为想备份的数据库的名称)
6、添加计划,设置频率,时间等。
确定,完成。
一、 SQL Server 2005数据库定期备份
SQLServer2005的定期备份是通过创建“维护计划”来实现的。主要有两种方式:1、维护计划向导。2、新建维护计划(用户手工创建)
如果想在SQLServer2005中使用维护计划来设计维护备份数据库任务时,有一个前提条件:“SQL Server 代理”服务必须是启用状态
首先介绍使用维护计划向导来执行数据库的定期备份
操作过程:
1、 单击:开始→程序→Microsoft SQL Server 2005→“SQL Server Management Studio”(图1)
图1
2、 右键单击:SQL Server 代理→启动(注: 要执行维护计划,SQL Server 代理必须启动!)
3、 右键单击:管理→维护计划→维护计划向导,单击“下一步”(图2)
图2
4、 在“选择目标服务器”窗口,依次设置“名称”、“服务器”、“身份验证”等信息,单击“下一步”(图3),
图3
说明:身份验证:安装sqlserver2005时采用的验证方式
5、 在“选择维护任务”窗口,选择准备执行的任务,单击“下一步”(图4)
图4
说明:
1) 在维护任务列表中勾选需要执行的任务,可多选
2) 下方黄色区域针对选择的每项任务加以说明
6、 在“选择维护任务顺序”窗口,可以调整每项任务的执行顺序,单击“下一步”(图5)
图5
说明:
1) 调整多个任务的先后执行顺序可通过上移和下移来实现
7、 在“定义备份数据库(完整)任务”窗口,勾选需要备份的数据库名称,单击下一步(图6)
图6
图7
说明:
1) 选择将备份文件备份到磁盘上
2) 指定备份文件存放的文件夹和位置
3) 勾选“验证备份完整性”
8、 在“选择计划属性”窗口,单击“更改”按钮打开“新建作业计划窗口”,设置好各项参数后单击“确定”按钮(图8)
图8
说明:
1) 设置好各项参数后,在摘要说明栏中叙述了本次作业的详细内容
9、 再次回到“选择计划属性”窗口,单击下一步(图9)
图9
10、 在“选择报告选项”窗口,设置报告的保存或分发方式,单击下一步(图10)
图10
11、 显示本次维护计划的详细信息,单击完成(图11)
至此,SQL Server 2005采用维护计划即可以达到定期备份数据库的目的。
declare @d varchar(2000)
declare @dbname varchar(200)
declare @sql varchar(max)
set @d=convert(varchar(20),getdate(),120)
set @d=replace(@d,':','-')
set @dbname='Archive' --数据库名称
set @sql='backup database ['+@dbname+'] to disk=''d:/Databak/'+@dbname+'_full_'+@d+'.bak'' WITH CHECKSUM,NOFORMAT,INIT,SKIP'
--print @sql
exec (@sql)
二、SQL Server 2005数据库备份定期清理
由于采用上述介绍的数据库维护计划,可以到达定期备份数据库的目的,但是产生了一个问题,数据库备份定期一直在生成,如果大的数据库一个备份文件达几 GB,长期备份的话,硬盘将满了,并且保存太长时间的备份也没有太大必要,因此如何定期清理这些备份是我们接下来要介绍的。有很多种方法可以实现定期清理 备份,本文介绍一种实现方法——采用forfiles命令,这个命令在Windows Server 2003系统中存在,在XP中并不存在,因此需要下载安装。
1. 下载forfiles并安装。
下载forfiles,并且拷贝forfiles.exe至具备环境变量的目录下(比如:C:/WINDOWS/system32)。这样你就可以在命令 提示符中用forfiles命令了。 下载地址:http://download.csdn.net/source/1812302
2. forfiles命令简介
FORFILES [/P pathname] [/M searchmask] [/S]
[/C command] [/D [+ | -] {yyyy-MM-dd | dd}]
描述:
选择一个文件(或一组文件)并在那个文件上
执行一个命令。这有助于批处理作业。
参 数列表:
/P pathname 表示开始搜索的路径。默认文件夹是当前工作的
目录 (.)。
/M searchmask 根据搜索掩码搜索文件。默认搜索掩码是 '*'。
/S 指导 forfiles 递归到子目录。像 "DIR /S"。
/C command 表示为每个文件执行的命令。命令字符串应该
用双引号括起来。
默认命令是 "cmd /c echo @file"。下列变量
可以用在命令字符串中:
@file - 返回文件名。
@fname - 返回不带扩展名的文件名。
@ext - 只返回文件的扩展。
@path - 返回文件的完整路径。
@relpath - 返回文件的相对路径。
@isdir - 如果文件类型是目录,返回 "TRUE";
如果是文件,返回 "FALSE"。
@fsize - 以字节为单位返回文件大小。
@fdate - 返回文件上一次修改的日期。
@ftime - 返回文件上一次修改的时间。
要在命令行包括特殊字符,字符请以 0xHH
形式使用十六进制代码(例如,0x09 为 tab)。
内部 CMD.exe 命令前面应以 "cmd /c" 开始。
/D date 选择文件,其上一次修改日期大于或等于 (+),
或者小于或等于 (-) 用 "yyyy-MM-dd" 格式指定的日
或选择文件,其上一次修改日期大于或等于 (+)
当前日期加 "dd" 天,或者小于或等于 (-) 当前
日期减 "dd" 天。有效的 "dd" 天数可以是
0 - 32768 范围内的任何数字。如果没有指定,
"+" 被当作默认符号。
/? 显示帮助消息。
例如:
FORFILES /?
FORFILES
FORFILES /P C:/WINDOWS /S /M DNS*.*
FORFILES /S /M *.txt /C "cmd /c type @file | more"
FORFILES /P C:/ /S /M *.bat
FORFILES /D -30 /M *.exe
/C "cmd /c echo @path 0x09 在 30 前就被更改。"
FORFILES /D 2001-01-01
/C "cmd /c echo @fname 在 2001年1月1日就是新的。"
FORFILES /D +2006-12-12 /C "cmd /c echo @fname 今天是新的。"
FORFILES /M *.exe /D +1
FORFILES /S /M *.doc /C "cmd /c echo @fsize"
FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"
不熟悉的可以根据上面的例子,逐个联系,看看执行结果。
3. 删除备份的批处理脚本
FORFILES /P D:/sqldataup /M *.bak /C "cmd /C del /Q @path" /d –5
上述脚本的意思是:备份文件夹为D:/sqldataup,/d –5表示删除5天前的数据库备份,这个可以根据实际需要设定。
注意:如果路径有空格,则应用""将路径引起来。如:"C:/my documents/database backup",否则出错。
4. 通过计划任务调用批处理脚本如下图所示:(下图为在网上摘录)
至此,数据库定期备份和清理备份可以实现了。清理备份还有其他方法,此文并不介绍。
- 标签:
-
云计算