1. 背景
安装了SQLServer2016,其版本为 Microsoft SQL Server 2016 (RTM) - 13.0.1601.5 (X64) Apr 29 2016 23:23:58 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows Server 2012 R2 Standard 6.3 <X64> (Build 9600: ) (Hypervisor)
。
当我使用 Microsoft SQL Server Management Studio
工具对数据库做定时备份时,在 管理
下没有找到 维护计划
这个功能,可能是数据库版本限制了。由于在网上找了一些脚本来实现数据库自动备份与自动清理任务,自己也做了一些优化与测试,以下是操作记录。
下列步骤仅对某一个数据库在特定的时间点做全量的备份,并没有备份日志(使用备份文件并不能还原到某个时间点)。
2. 操作步骤
2.1. 写一个sql脚本用作数据库备份与自动清理
例如:我们在目录 E:\sqlbak
创建一个文件 backup.sql
,以后的备份文件也放在该目录下,其内容如下:
GO
DECLARE @oldDate DATETIME;
DECLARE @date DATETIME;
DECLARE @dbName VARCHAR(40);
DECLARE @pathName VARCHAR(100);
DECLARE @fileName VARCHAR(1000);
-- 设置数据库名称
SELECT @dbName = 'et_plus';
-- 设置数据库备份路径
SELECT @pathName = 'E:\sqlbak\';
-- 设置数据库备份文件保留天数
SELECT @oldDate = GETDATE() - 5;
SELECT @date = GETDATE();
SELECT @fileName = @pathName + @dbName + CAST(DATEPART(yyyy,@date) as varchar) + '-' + CAST(DATEPART(mm,@date) AS varchar) + '-' + CAST(DATEPART(dd,@date) as varchar) + '.bak';
-- 开始备份数据库
BACKUP DATABASE @dbName TO DISK=@fileName;
-- 开始删除过期的数据库备份文件
EXECUTE master.dbo.xp_delete_file 0,@pathName,'bak',@oldDate,0;
GO
上述文件中,需要设置数据名、文件路径(注意是以 \ 结尾)、备份文件保留份数
2.2. 写一个批处理文件用作执行上述sql脚本
例如:我们在目录 E:\sqlbak
创建一个文件 backup_database.bat
,其内容如下:
sqlcmd -S . -i E:\sqlbak\backup.sql -o optLog_%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%.txt
上述文件中,需要注意脚本文件的路径和名称,要与2.1中设置的相同!
2.3. 新建一个Windows计划任务每天定时执行批处理文件
打开 控制面板
>> 系统和安全
>> 管理工具
>> 计划任务