首页 > 代码库 > 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’