对于一个软件系统维护人员而言,定期压缩备份数据库,是我们的日常工作之一,但随着客户长久的营业,数据库也会日益增大,如何定期并快速/有效的压缩备份数据库,我们也需要掌握一定方法(以SQL2008为例):
一、如何快速有效的压缩备份数据库?
在备份数据库时,我们2种方式来备份:手动备份数据库,自动备份数据库。
在客户长久营业后,数据库是日益增大的,手动备份数据库既费时也费力,此时我们可以通过“压缩备份数据库”的方式来操作。
压缩备份数据库:是通过 with compression 启用备份压缩,指定对此备份执行备份压缩,覆盖服务器级默认设置。此方式适用于 SQL Server 2008和更高版本试用。
语句如下:
backup database DbName to disk = 'D:\DbName.bak' --全备
with compression; --压缩备份
go
----- DbName 为需要备份的数据库名称,请手动修改
例:客户原数据11G,如果手工备份大概需要10左右分钟,备份后数据库大小也在11G左右
我们通过语句压缩备份数据库,压缩备份时间在3分钟左右,备份后的数据库大小为2.03G
通过以上语句,我们可以减少数据库压缩时间,也可以降低数据库占用磁盘空间,大家在给客户备份数据库时可参考。
二、如何创建任务计划?
(1)在系统 开始 - 所有程序 中找到SQL2008的目录,找到 配置工具-SQL Server配置管理器,并运行;
(2)在‘SQL Server 服务’中找到“SQL Server 代理”,双击后启动服务;
注意:SQL代理服务默认是不开机启动的,需要在系统服务中设置为开机启动
开始 - 运行 - 输入 services.msc ,进入系统服务
系统服务中找到代理服务,并设置启动类型为‘自动’或‘自动(延迟启动)’
(3)运行并登录查询分析,在 SQL Server代理-作业 中‘新建作业’,设置后保存;
(4)在属性‘步骤’中选择类型为“Transact-SQL 脚本(T-SQL)”,并添加数据库备份脚本语句,设置后保存;
执行备份计划的语句如下:
--定义变量,把备份数据库的SQL脚本赋值给变量
declare @SqlBackupDataBase as nvarchar(1000)
set @SqlBackupDataBase=N'BACKUP DATABASE issbakev10_zss TO DISK = ''G:\issbakev10_'+
CONVERT(varchar(11),GETDATE(),112)+REPLACE(CONVERT(varchar(12),GETDATE(),108),':','')+'.bak'''
+'with STATS = 1,compression'
--备份文件格式:issbakev10_202009181815.bak
exec sp_executesql @SqlBackupDataBase --调用系统存储过程,执行SQL脚本
(5)在属性‘计划’中新建计划,并设置计划执行的日期、时间及频次等,设置后保存;
(6)作业计划建立成功后,可手动执行作业计划来验证计划是否可正常运行