相忘于江湖

不抛弃,不放弃... 请给我勇敢,改变可以改变的;请给我坚强,接受不可以改变的;请给我智慧,分辨这两者。

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

工作中经常会碰到备份一个应用的数据库,刚开始你可能会每天手动的备份一次,但是时间长了你也许就会想到自动备份,下面简单的介绍一下我经常用的自动备份的方法.

   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...'实现。” 

posted on 2010-10-06 17:25  playman0211  阅读(699)  评论(0编辑  收藏  举报