首页 > 代码库 > sql2008R2数据库备份--双机备份
sql2008R2数据库备份--双机备份
二.解决SQL2008代理作业出现错误: c001f011维护计划创建失败的解决方法
SQL2008数据库总会出现从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-497E-B2F9-AF6AA475916F} 的 COM 组件创建实例失败,
原因是出现以下错误: c001f011。 (Microsoft.SqlServer.ManagedDTS)------------------------------
从 IClassFactory 为 CLSID 为 {17BCA6E8-A95D-497E-B2F9-AF6AA475916F} 的 COM 组件创建实例失败,原因是出现以下错误: c001f011。 (Microsoft.SqlServer.ManagedDTS)
解决方法:拖曳文件
在命令行里执行下面的语句重新注册dts.dll文件,分别对应不同的平台:
(x86)
c:\windows\system32\regsvr32 "C:\Program Files\Microsoft SQL Server\100\DTS\Binn\dts.dll"
(x64)
c:\windows\syswow64\regsvr32 "C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\dts.dll"
三,通过在服务器创建共享文件夹来实现双机备份sql2008数据库
说明 再通过创建作业或者计划内容来备份数据库必须开启MSSQL代理服务
sql server2008所在计算机:192.168.123.104
异地备份计算机:192.168.123.107
Windows2008系统 user:Administrator password:admin_12345
两台计算机在同一个网段内
- 创建共享文件夹backup,权限为 Administrator 全控制
- 新建作业
命令中的SQL语句:
EXEC sp_configure‘xp_cmdshell‘, 1
GO
RECONFIGURE
GO
declare @sql varchar(4000)
declare @backupfile varchar(2000)
declare @retaindays int
declare @now datetime
declare @deletefiles varchar(2000)
declare @cmd varchar(2000)
declare @i int
declare @User varchar(2000)
declare @Pwd varchar(2000)
declare @Store varchar(2000)
declare @IPPart varchar(2000)
declare @IP varchar(2000)
set @Store=‘hbsp‘ --数据库名
set @User =‘Administrator‘ --用户名(异地服务器)-----要管理员权限
set @Pwd =‘admin_12345‘ --密码(异地服务器)-------密码不要有符号
set @IPPart=‘d:\hbspbackup‘ --路径(异地服务器的共享目录,此目录要有有上面用户的访问读写权限)
set @IP=‘192.168.123.107‘ --异地服务器IP或主机名
set @retaindays=30 --要保留备份的天数
--创建映射
exec master..xp_cmdshell ‘net use \\192.168.123.107\hbspbackup "admin_12345" /user:192.168.123.107\Administrator‘
--开始备份
set @backupfile=‘\\192.168.123.107\hbspbackup\‘+ @Store + ‘_db_‘+
replace(replace(replace(convert(varchar,getdate(),20),‘-‘,‘‘),‘ ‘,‘‘),‘:‘,‘‘)+‘.BAK‘
set @sql=‘backup database ‘ + @Store + ‘ to disk=‘‘‘+@backupfile+‘‘‘ with retaindays=‘+convert(varchar(10),@retaindays)
exec (@sql)
set @backupfile=‘\\192.168.123.107\hbspbackup\‘+ @Store +‘_tlog_‘+
replace(replace(replace(convert(varchar,getdate(),20),‘-‘,‘‘),‘ ‘,‘‘),‘:‘,‘‘)+‘.TRN‘
set @sql=‘backup LOG ‘ + @Store + ‘ TO DISK=‘‘‘+@backupfile+‘‘‘ with retaindays=‘+convert(varchar(10),@retaindays)
exec (@sql)
--关闭允许执行xp_cmdshell
EXEC sp_configure‘xp_cmdshell‘, 0
GO
RECONFIGURE WITH OVERRIDE
GO
这条语句只是在服务器共享文件夹中备份了数据库,而本地没有备份数据库,如果要在本地也声称备份文件则添加一条备份在本地的sql语句
Bakcup database hbsp to disk ‘c:\backup\back.bak’
Back log hbsp to disk ‘c:\backup\backlog.trn’