SQL Server 2000Windows VistaDBAWindows 2003Windows 2000Windows XP中级开发Visual StudioSQL ServerSQLWindows
SQL 数据库备份脚本






4.10/5 (8投票s)
快速为您的 SQL 数据库创建完整备份方案。
引言
“预防胜于治疗”。 这在企业应用程序的上下文中是正确的,良好的备份方案是防止数据丢失的预防措施。 这组脚本为您提供了一种快速简便的方法,可以为任何给定的 SQL 数据库创建此备份方案。
可供下载的脚本适用于大型和常规数据库,以及带或不带通知的数据库。 我认为大型数据库是指任何超过 1 GB 的数据库,但这可能因您个人的偏好以及数据库中每天发生的变化率而异。
成果
脚本执行以下操作
- 创建一个文件夹(在指定位置)以存储备份文件。
- 为一周中的每一天创建一个子文件夹,从而组织备份。
- 创建一系列 SQL Server Agent 作业以执行备份。
- 一个“标准”作业将在每天早上 6 点、中午 12 点和下午 6 点执行事务日志备份。
- 一个“标准”作业将在每天晚上 7 点执行完整数据库备份。
- 一个“大型”作业将在每天早上 6 点到下午 6 点之间每小时执行一次事务日志备份。
- 一个“大型”作业将在每天晚上 7 点执行完整数据库备份。
- 收缩和重组作业将在星期日上午 9 点进行。
- 所有每日事务日志备份文件将在当天第一次执行该作业时被覆盖。
- 所有完整数据库备份文件每天都会被覆盖。
Using the Code
代码相对简单,只需要少量信息。 设置变量的值。
无通知:常规脚本和大型脚本都需要相同的信息。 设置 @Database
和 @Path
,然后执行脚本。
use master
declare @Database nvarchar(50)
declare @Path nvarchar(255)
set @Database = '[Database]'
set @Path = '[Backup Path]'
带通知:常规脚本和大型脚本都需要相同的信息。 设置 @Database
和 @Path
变量,并指定 @OperatorName
、@OperatorEmail
和 @OperatorNetSend
变量。 然后执行脚本。
use master
declare @Database nvarchar(50)
declare @Path nvarchar(255)
declare @OperatorName nvarchar(255)
declare @OperatorEmail nvarchar(255)
declare @OperatorNetSend nvarchar(50)
set @Database = '[DataBase]'
set @Path = '[Backup Path]'
set @OperatorName = '[Insert Name Here]'
set @OperatorEmail = '[Email Address]'
set @OperatorNetSend = '[Net Send Address]'
@Operator...
变量为 SQL Server 提供设置通知所需的信息。
@OperatorEmail
允许使用电子邮件地址;但是,这需要在 SQL Server Agent 中配置 SQLMail。
@OperatorNetSend
允许 SQL Server 对计算机执行网络发送;但是,由于现在安全性越来越高,Messenger 服务通常被禁用,这可能无法正常工作。
关注点
您将需要访问 Master 数据库并拥有提升的权限。
使用查询分析器肯定会使事情变得容易,并且还允许您在执行之前解析脚本。
自 2001 年以来,我一直在使用上述方案,并取得了很大的成功。 唯一的缺点是备份集总大小,尤其是在处理大型(> 1 GB)数据库时。