主机备份和远程备份同时进行

能不能写个存储过程在本机备份的同时再在指远程机器上备份数据库?
我想写一个存储过和实现以下功能: 
备份数据库有以下3个 
account 
game3g 
CruelDragon3GBaseData 

备份数据库每60分钟一次 
要求为: 

1、保存格式为数据库名+当前时间,新建文件夹名称为:当前日期 

例如:今天是2007-09-16号,时间为20:47,那么备份格式为: 
            新建一个2007-09-16的文件夹,里边分别保存为:account_20:47,game3g_20:47,CruelDragon3GBaseData_20:47 

2、自动删除头一天的备份 
例如:今天是2007-09-16号,创造第一个备份时自动删除2007-09-15号备份的文件夹就行了 

3、备份完后,自动上传到其它的服务器 

谁能帮我完全解决50分全给他! 



------解决方案--------------------
1. 在Master数据库中建一个格式化时间的函数 
Create function FormatDate( 
@date smalldatetime 

returns nvarchar(10) 
begin 
declare @dt nvarchar(10); 
set @dt = SubString(Convert(nvarchar(20),@date,120),1,10); --格式化为yyyy-MM-dd HH:mm:ss格式,与后面的批处理日期格式保持一致 
return @dt 
end 

2. 创建一个备份数据库的存储过程 
/* 
* 在磁盘上根据日期创建一个文件夹,并将数据库备份到文件夹内 
*/ 
Create Proc BackupCRM 
as 
begin 

declare @path nvarchar(200); 
declare @crmfilename nvarchar(200); 
declare @metafilename nvarchar(200); 
declare @cmd nvarchar(1000); 

set @path = 'E:\Backup\ ' + dbo.formatdate(getdate()) + '\ '; 
set @crmfilename = @path + 'CRM.bak '; 
set @metafilename = @path + 'Meta.bak '; 
set @cmd = 'md ' + @path; 

--为了安全,建议还是将xp_cmdshell改名 

exec xp_cmdshell @cmd,NO_OUTPUT 

backup database _0105237670_MSCRM to disk = @crmfilename; 
backup database _0105237670_METABASE to disk = @metafilename 
end 

3. 创建清空文件和复制文件的批处理命令 
a.用于备份数据库前清空文件的批处理文件clearfiles.bat 
del E:\Backup\%date:~10,4%-%date:~4,2%-%date:~7,2%\CRM.bak 
del E:\Backup\%date:~10,4%-%date:~4,2%-%date:~7,2%\Meta.bak 

说明: %date%可以获得日期的字符串,但我们需要用~ index,len来截断并组合成yyyy-MM-dd格式的字符串,这和SubString函数类似,index表示字符串的起始索引位置,len表示要截取的长度. 
如果想看到自己Server的%date%输出格式是什么,可以输入 echo %date%,我们的Server输出是Wed 02/14/2007 
b. 复制文件至远程机器批处理文件copyfiles.bat 

md \\10.89.53.250\e$\backup\%date:~10,4%-%date:~4,2%-%date:~7,2%\ 
del \\10.89.53.250\e$\backup\%date:~10,4%-%date:~4,2%-%date:~7,2%\CRM.bak 
del \\10.89.53.250\e$\backup\%date:~10,4%-%date:~4,2%-%date:~7,2%\Meta.bak 

copy E:\Backup\%date:~10,4%-%date:~4,2%-%date:~7,2%\CRM.bak \\10.89.53.250\e$\backup\%date:~10,4%-%date:~4,2%-%date:~7,2% 
copy E:\Backup\%date:~10,4%-%date:~4,2%-%date:~7,2%\Meta.bak \\10.89.53.250\e$\backup\%date:~10,4%-%date:~4,2%-%date:~7,2% 


4. 启动SQL Agent服务,并设为开机自动运行,然后新建一个备份的Job 

注意将批处理执行失败后的动作设为 "执行下一步操作 ",否则如果文件不存在等可能会导致Job不能正常运行 


最后在Schedules中新建一个Schedule,当然选择的运行的时间点就是那种风高月黑夜深人静的时候罗:)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值