日期:2014-05-16  浏览次数:20407 次

自动定时备份sqlserver数据库的方法
转自:http://www.aspxhome.com/database/mssql/201111/157163.htm

下面是我已经证实可用的自动备份的方法.
1、打开企业管理器->管理->sql server代理
2、新建一个作业,作业名称随便取,例如:data备份,所有者选择sa,当然你也可以选择其他用户,前提是该用户有执行作业的权限;
3、点击步骤标签,进入步骤面板.新建步骤,步骤名可以随便填写,如步骤1,类型和数据库默认,不需要修改.命令中写入以下语句:
BACKUP DATABASE [数据库名] TO DISK = N'F:\\databack\\firenews备份' WITH NOINIT , NOUNLOAD , NAME = N'firenews备份', NOSKIP , STATS = 10, NOFORMAT
注意:需要修改的地方,数据库名,DISK=(这里需要填写路径和你的数据库备份的名称)后面的Name=可以随便填写.
4、点击调度标签,进入调度面板,新建调度,名称随便填写,选择反复出现,点更改可以选择你想要执行任务的随意调度.如每天,每2天,每星期,每月等.根据需要自己设置;(注意:在调度名称后面有个启动选项,必须勾选)
5、确定后,不要忘记一件事情,在你刚才建立的工作上点右键,启动工作,如果你的工作没有问题,将会提示执行成功,并有相对应的备份文件在你的磁盘上出现;
6、还有一个重要的问题就是你的sql server agent服务器已经启动.
如果我们需要根据每天的日期来生成一个新的备份,以便我们区别备份文件.这时,我们需要修改一下刚才的sql语句.
参考实例:

1、自动备份,固定备份名,每次会追加备份
代码如下:


backup database FireNews to disk=N'F:\\databack\\firenews备份' with noinit,nounload,name=N'firenews备份',noskip,stats=10,noformat
backup database fireweb to disk=N'F:\\backup\\data\\fireweb\\fireweb备份' with noinit,nounload,name=N'fireweb备份',noskip,stats=10,noformat


2、自动备份,以时间命名,完整备份

代码如下:


declare @filename nvarchar(100) set @filename='F:\\databack\\data'+convert(char(8),getdate(),112)+'.bak' print @filename BACKUP DATABASE [firenews] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'firenews备份', NOSKIP, STATS = 10, NOFORMAT
declare @filename nvarchar(100) set @filename='F:\\backup\\data\\fireweb\\fireweb'+convert(char(8),getdate(),112)+'.bak' print @filename BACKUP DATABASE [fireweb] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'fireweb备份',NOSKIP, STATS = 10, NOFORMAT


注:
1、备份的数据库存放的文件夹必须已经存在;
2、N 必须大写;
3、NAME的值可以随便写;
4、FireNews,fireweb为数据库名;
5、新建作业时提示:未能找到存储过程master.dbo.xp_regread,表名master数据库没有这个存储过程(可能是做安全处理的时候删除了),需自己注册。方法是:找到 数据库——
master——扩展存储过程,右键“新建扩展存储过程”(名称:xp_regread,路径直接填:xpstar.dll)
以下为完整的备份数据库的方法:
备份整个数据库:

代码如下:


BACKUP DATABASE { database_name | @database_name_var }
TO < backup_device > [ ,...n ]
[ WITH
[ BLOCKSIZE = { blocksize | @blocksize_variable } ]
[ [ , ] DESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] DIFFERENTIAL ]
[ [ , ] EXPIREDATE = { date | @date_var }
| RETAINDAYS = { days | @days_var } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] FORMAT | NOFORMAT ]
[ [ , ] { INIT | NOINIT } ]
[ [ , ] MEDIADESCRIPTION = { 'text' | @text_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] NAME = { backup_set_name | @backup_set_name_var } ]
[ [ , ] { NOSKIP | SKIP } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
]


参数
DATABASE
指定一个完整的数据库备份。假如指定了一个文件和文件组的列表,那么仅有这些被指定的文件和文件组被备份。


说明 在进行完整数据库备份或差异数据库备份时,Microsoft? SQL Server? 备份足够的事务日志,以生成一个将在还原数据库时使用的一致的数据库。在 master 数据库上只能采用完整数据库备份。

{ database_name | @database_name_var }
指定了一个数据库,从该数据库中对事务日志、部分数据库或完整的数据库进行备份。如果作为变量 (@database_name_var) 提供,则可将该名称指定为字符串常量 (@database_name_var = database name) 或字符串数据类型(ntext 或 text 数据类型除外)的变量。
< backup_device >
指定备份操作时要使用的逻辑或物理备份设备。可以是下列一种或多种形式:
{ logical_backup_device_name } | { @logical_backup_device_name_var }
是由 sp_addumpdevice 创建的备份设备的逻辑名称,数据库将备份到该设备中,其名称必须遵守标识符规则。如果将其作为变量 (@logical_backup_device_name_var) 提供,则可将该备份设备名称指定为字符串常量 (@logical_backup_device_name_var = logical backup device name) 或字符串数据类型(ntext 或 text 数据类型除外)的变量。
{ DISK | TAPE } =
'physical_backup_device_name' | @physical_backup_device_name_var
允许在指定的磁盘或磁带设备上创建备份。在执行 BACKUP 语句之前不必存在指定的物理设备。如果存在物理设备且 BACKUP 语句中没有指定 INIT 选项,则备份将追加到该设备。