工作中经常会碰到备份一个应用的数据库,刚开始你可能会每天手动的备份一次,但是时间长了你也许就会想到自动备份,下面简单的介绍一下我经常用的自动备份的方法.
1、打开企业管理器->管理->sql server代理
2、新建一个作业,作业名称随便取,例如:data备份,所有者选择sa,当然你也可以选择其他用户,前提是该用户有执行作业的权限;
3、点击步骤标签,进入步骤面板.新建步骤,步骤名可以随便填写,如步骤1,类型和数据库默认,不需要修改.命令中写入以下语句:
BACKUP DATABASE [数据库名] TO DISK = N'F:\\data\\数据库备份' WITH NOINIT , NOUNLOAD , NAME = N'数据库备份', NOSKIP , STATS = 10, NOFORMAT
注意:需要修改的地方,数据库名,DISK=(这里需要填写路径和你的数据库备份的名称)后面的Name=可以随便填写. 4、点击调度标签,进入调度面板,新建调度,名称随便填写,选择反复出现,点更改可以选择你想要执行任务的随意调度.如每天,每2天,每星期,每月等.根据需要自己设置;
5、确定后,不要忘记一件事情,在你刚才建立的工作上点右键,启动工作,如果你的工作没有问题,将会提示执行成功,并有相对应的备份文件在你的磁盘上出现;
6、还有一个重要的问题就是你的sql server agent服务器已经启动.
如果我们需要根据每天的日期来生成一个新的备份,以便我们区别备份文件.这时,我们需要修改一下刚才的sql语句.参考实例: declare @filename nvarchar(100) set @filename='F:\\AddIn\\备份[url=file://data]\\data'+convert(char(10),getdate(),112[/url]) print @filename BACKUP DATABASE [addin] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'addin 备份', NOSKIP , STATS = 10, NOFORMAT
declare @filename nvarchar(100) ;
set @filename='c:\\AddIn\\备份[url=file://data]\\data'+convert(char(10),getdate(),112[/url]);
print @filename ;
BACKUP DATABASE [Destination] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'Destination 备份',
NOSKIP , STATS = 10, NOFORMAT;
要用远程数据库可以备份本地。
本地数据库也可以备份到远程。
--备份环境:把数据库服务器(192.168.1.178)的数据库(TEST)备份到(192.168.1.101)的(E$:默认名称)E下
declare @time varchar(20);
declare @filename varchar(48);
set @time = Convert(Varchar(19), getdate(),126);
--首先,做一个与客户端的映射
exec master..xp_cmdshell
'net use z: \\192.168.1.101\e "密码" /user:192.168.1.101\administator'
--'net use z: \\192.168.1.101\\e 密码 /user:192.168.1.101\\administator'
--'net use z: \\192.168.1.101\e 密码 /user:192.168.1.101\administator'
/*--说明:
z: 是映射网络路径对应本机的盘符,与下面的备份对应
\\192.168.1.101/e 是要映射的网络路径
192.168.1.101\administrator
192.168.1.101是远程的计算机名,administrator是登陆的用户名
密码 上面指定的administrator用户的密码
--*/
--其次,进行数据库备份
set @filename = 'z:\\backup\\' + substring(@time,1,4) + substring(@time,6,2)+ substring(@time,9,2) + substring(@time,12,2) + substring(@time,15,2) + substring(@time,18,2)
--set @filename = 'd:\\tools\\' + substring(@time,1,4) + substring(@time,6,2)+ substring(@time,9,2) + substring(@time,12,2) + substring(@time,15,2) + substring(@time,18,2)
BACKUP DATABASE [jhdb] TO DISK = @filename WITH NOINIT , NOUNLOAD , NAME = N'数据库备份', NOSKIP , STATS = 10, NOFORMAT
--最后.备份完成后删除映射
exec master..xp_cmdshell 'net use z: /delete'
之前一直没有成功,居然网络路径弄错了。
写成了\\192.168.1.101\e$ 应该是 \\192.168.1.101\e 低级错误!
方法二:由于局域网内远程备份数据库受网络的影响,备份速度慢,直接备份到远程硬盘并不是个好主意,一方面速度慢,另一方面网络传输过程中可能出现意外。还是直接备份到本地,再拷到远程硬盘的好,用SQL的脚本可以调用:“调用master..xp_cmdshell 'copy...'实现。”