中小型企业SQL数据库备份方案
前些天接了个天津××医院数据库升级工作,原系统是
SQL Server 2000
(
iSCSI
存储)
故障转移群集,升级到
SQL Server 2005
(光纤存储)故障转移群集,升级后拓扑如下:
SQL Server 2005
故障转移群集具体搭建我就不介绍了,网上有很多,如果有朋友看了网上的介绍还是不太明白,请联系我,联系方式在我的博客
[url]http://davidchen.blog.51cto.com[/url]
首页。
在天津××医院数据库升级工作中遇到了这么一个问题,以前在
SQL Server 2000
中做的数据库备份作业在
SQL Server 2005
中报错,就这个问题我们来分析一下,作业如下:
第一步、移动原来的备份文件到临时文件夹中
master.dbo.xp_cmdshell 'move /Y X:\
备份数据库地址
\*.* X:\
临时文件夹地址
\ '
第二步、备份目标数据库
declare @dbname varchar(100)
declare @dbbakname varchar(100)
set @dbname='
目标数据库名
'
set @dbbakname=replace(replace(replace(convert(datetime,getdate()) ,'-',''),' ',''),':','')
exec('BACKUP DATABASE '+@dbname+' TO DISK = N'' X:\
备份数据库地址
\'+@dbname+@dbbakname+'.bak'' WITH NOINIT , NOUNLOAD , NAME = N'''+@dbname+'
备份
'', NOSKIP , STATS = 10, NOFORMAT ')
第三步、删除原来的备份
master.dbo.xp_cmdshell 'del X:\
临时文件夹地址
\*.* /Q'
我来给大家简单的讲述一下备份作业
第一步是把备份文件夹中的所有文件移动到临时文件夹
第二步是完整备份目标数据库到备份文件夹
第三步是删除临时文件夹中的所有数据
作用:第一步将移动前一次的备份文件到临时文件夹,第二步执行备份,如果备份不成功,则停止,这样临时文件夹中还有上一次的完整备份,如果成功,则执行第三步,删除临时文件夹中的所有数据,也就是删除上次备份。这样周而复始,永远都保留了一份最新的完整备份。
下面我将演示一下备份作业,和在
SQL Server 2005
中使用这份备份作业遇到的错误。
1
、在
SQL Server
代理中,右键单击作业,选择新建作业。
2
、在选择页中单击常规,给作业命名,然后在选择页中单击步骤,单击新建按钮。
3
、在作业步骤界面中给步骤名称命名,并在命令框中写入第一步脚本。
4
、在作业步骤界面中给步骤名称命名,并在命令框中写入第二步脚本。
5
、在作业步骤界面中给步骤名称命名,并在命令框中写入第三步脚本。
6
、在开始步骤中选择从第一步开始。
7
、在选择页中单击计划,再点击新建按钮新建计划。
8
、给新建作业计划名称命名,在计划类型中选择重复执行,并在执行中选择每天执行,执行天数间隔一天,设置好执行计划的时间,并键入计划的开始日期。
9
、回到资源管理器界面,右键点击刚才建立的作业,选择开始作业,执行作业测试。
10
、在步骤弹出窗口中选择启动。
11
、我们发现执行作业错误。
12
、回到资源管理器界面,右键单击刚才执行的作业,选择查看历史记录。
13
、我们从下面分析结果的消息中看到
xp_cmdshell
被锁定,需要系统管理员用
sp_configure
命令来启用(
PS:
我们看的这条是我们刚才执行的,下面的都是我以前的测试,不好意思)。
14
、
sp_configure
启动
xp_cmdshell
的用法我在这里给大家介绍一下,启动
xp_cmdshell
在查询中执行下面这句话。
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE;
关闭只是将上面语句中的后面的那个
"1"
改成
"0"
就可以了。
EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 0;RECONFIGURE;
15
、再次用开始作业测试成功。
16
、查看备份文件夹中刚刚备份出来的文件。
17
、查看临时文件夹中上次备份的文件(之前我备份过)是否已经被删除。
总结:这种备份方案只适用于中小型企业简单恢复模式的完整备份,不适合大型企业中使用,建议大型企业或有要求恢复到某个时间段的企业使用大容量日志备份。