Phoenix's Blog

博客园 首页 新随笔 联系 订阅 管理

数据对于企业来说及其重要,像前几天的一个晚上,我们公司突然断电,CRM服务器没有UPS电源,所以造成两块硬盘出现Media Error,我们的磁盘采用RAID5的方式,将其中一块Force Online后,还是不能Rebuild,进不了操作系统. 幸亏装了双系统,从另外一个OS启动将数据全部取出来了.算是有惊无险的一次吧.

现在我将其进行自动备份到其他机器上去,作一个双保险.

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,当然选择的运行的时间点就是那种风高月黑夜深人静的时候罗:)

posted on 2007-02-14 12:38  Phoenix  阅读(3746)  评论(0编辑  收藏  举报