SQL自动异地备份方法
方法一:
mssql数据库远程备份的job
/*在远程机器操作系统的计算机管理里建立一个用户名为kyle的用户,密码为1234,同时在那台机器的非系统盘里建一个名为backup的共享文件夹,为了安全另外设置这个文件夹只有这个kyle用户可以访问。*/
declare @sql varchar(500)
select @sql='//10.2.0.12/backup/dbname'+'_db_'+convert(varchar(10),getdate(),112) +
substring(convert(varchar(10),getdate(),108),1,2) +'.bak'
exec master..xp_cmdshell 'net use //10.2.0.12/backup 1234 /user:remotehost/kyle'
backup database dbname to disk=@sql --备份数据库,这里的10.2.0.12为远程机器的ip,remotehost为远程机器的机器名,dbname为本地sqlserver服务器要备份的数据库
go
declare @sql varchar(500)
select @sql='del '+'//10.2.0.12/backup/dbname'+'_db_'+convert(varchar(10),dateadd(day,-7,getdate()),112) +
substring(convert(varchar(10),dateadd(day,-7,getdate()),108),1,2) +'.bak'
exec master..xp_cmdshell @sql --删除7天前的备份,也就是只保留7个最新备份
go
方法二:
用SQL自带的schedule定时把数据库backup生文件,用windows的计划任务定时copy文件到其它机器,再用SQL自带的schedule定时把文件restore成数据库。
如果从数据源机器的Enterprise Manager中可以看到或添加注册目标数据库的话(即开放了1433端口),可以选择用导出功能,在DTS wizard中选好源数据库和目标数据库,选中源数据库中所有表,并记得配置每个表的transform项为“清空目标表”,有自增长字段的话要选“允许添加自增长字段”,接下来要选定期执行并选好计划,就OK了。
all task中选backup的时候,最下面有一项就是schedule
右键点击你要备份的数据库,弹出菜单中选“所有任务”中的“备份数据库”,最下面选中“计划表”然后就可以设置定期运行的,如果你的数据库用的是缺省的完全恢复模式,选差异备份应该是比较合理的选择,这样备份速度最快。
方法三:
先说一下思路,就是在服务器上备份生成文件后,再通过DOS命令将此文件COPY到另一台电脑。
先在服务器上运行数据库备份。
然后在异地机上共享一个文件夹,做为服务器上的一个映射网络驱动器。
将文件COPY到这个文件夹就算完事了,但是要怎么实现自动并且定时COPY呢?
就用DOS命令来实现自动,Windows任务计划来实现定时。
新建一个文本文件:copy 路径:/文件名 映射驱动器:/路径
另存为BAT文件。
最后一步,在Windows任务计划中定时调用这个BAT文件就可以搞定了。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/postfxj/archive/2010/03/11/5367382.aspx