65.9K
CodeProject 正在变化。 阅读更多。
Home

SQL 数据库备份脚本

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.10/5 (8投票s)

2007年5月3日

CPOL

2分钟阅读

viewsIcon

59909

downloadIcon

564

快速为您的 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)数据库时。

© . All rights reserved.