打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
SQL2005及2000的异地备份
userphoto

2014.05.09

关注

[c-sharp] view plaincopy?
  1. --SQL如何备份数据库到异机   
  2.   
  3. 写成存储过程,建立作业定时备份~~~   
  4.   
  5.   
  6. --在sql中映射一下就可以了   
  7. exec master..xp_cmdshell 'net use z: //yizhi/D$ "密码" /user:yizhi/administrator'   
  8.   
  9. /*--说明:  
  10. exec master..xp_cmdshell 'net use z: //xz/c$ "密码" /user:xz/administrator'  
  11.  
  12. z:是映射网络路径对应本机的盘符,与下面的备份对应  
  13. //xz/c$是要映射的网络路径  
  14.  
  15. xz/administrator  
  16. xz是远程的计算机名,  
  17. administrator是登陆的用户名  
  18. 密码 面指定的administrator用户的密码  
  19. --*/   
  20.   
  21. --备份;with init覆盖 |noinit添加   
  22. backup database 库名 to disk='E:/H_BACKUP.bak' with init   
  23.   
  24. --COPY   
  25. exec master..xp_cmdshell 'copy E:/H_BACKUP.bak z:'   
  26.   
  27. --删除(这句可以去掉)   
  28. --exec master..xp_cmdshell 'del E:/H_BACKUP.bak'   
  29.   
  30. --完成后删除映射   
  31. exec master..xp_cmdshell 'net use z: /delete'   

 

如果数据文件很大,会比较浪费时间,备份和考拷都会消费不少时间成本。 MSSQL  SERVER 2000在WIN2K环境下的实现方法如下:

最重要的是注意权限问题:  
  如:  
        SQLServer备到FileServer上  
        那你的SQLServer的启动用户必须在FileServer上有足够的权限!  
  --------------------^^^---------------------------------  
  1、SQLServer上新建一SQLUser用户权限大一点。  
  2、FileServer上建同一用户对某一文件夹有足够权限。  
  3、两机的SQLUser密码相同(方便一点)  
  4、将SQLServer改为SQLUser启动  
        (管理工具-->服务-->mssql项-->属性-->指定用户及密码)  
  5、//192.168.*.*/文件夹/ShareBak.Bak就可以了  
  -----------------------------------------------------------  
  简单一点就是:  
  如果你两台都是windows2ks  
  你的机器也用同样的Administrator密码,且sql服务器用administrator启动  
  那你写设备时就可以写://ip/.......  
   
  如果对方是98那你要完全共享一下!  
  你写设备时就可以写://ip/.......  

  写语句 backup   database   数据库名   to   disk='//计算机名//共享目录名/备份文件名' 即可以

 

[c-sharp] view plaincopy?
  1. MSSQL的异地远程存储,SQLServer备到FileServer上   
  2. 环境:win2k+sqlserver 2K SP3   
  3.   
  4.   
  5. backup database msdb to disk=’computer estfilename.bak’ --(注意大小写)   
  6.   
  7.   
  8. 如果SQL异地备份失败,归根结底是权限问题! H   
  9.   
  10. 那么你的SQLServer的启动用户必须在FileServer上有足够的权限!   
  11.   
  12. 1、SQLServer上新建一SQLUser用户权限大一点。   
  13. 2、FileServer上建同一用户对某一文件夹有足够权限,就是在两台机器上建相同的用户名和密码,然后与这个用户名登入电脑。   
  14. 3、两机的SQLUser密码相同(方便一点)   
  15. 4、将SQLServer改为SQLUser启动   
  16.   (管理工具-->服务-->mssql项-->属性-->指定用户及密码,是计算机的登入用户名)   
  17. 5、backup database 数据库 to disk=’192.168.*.*文件夹ShareBak.Bak’就可以了。   
  18. 作业:db_backup2pc @databaseName='databaseName',@filepath='filepath'   
  19.   
  20. CREATE PROCEDURE dbo.db_backup2pc   
  21. @databaseName  nvarchar(100) = null, --数据库名   
  22. @filepath              nvarchar(125) = null  --文件保存路径(IP+隐藏共享+)   
  23. AS   
  24. BEGIN   
  25. DECLARE   
  26. @year1  varchar(4),   
  27. @month1  varchar(2),   
  28. @day1  varchar(2),   
  29. @flag  varchar(255),   
  30. @proc_result tinyint,  /**//*返回系统存储过程xp_cmdshell运行结果*/   
  31. @sqlstr  varchar(2000),   
  32. @createdir varchar(255)  /**//*建立文件备份的目录*/   
  33.   
  34. begin   
  35.               
  36. -- Get year & month &day fromat of the day before yesterday   
  37. -- SET @year1 = substring(convert(varchar,datepart(yyyy,getdate()-2)),3,2)   
  38. SET @month1 =substring(convert(varchar,datepart(mm,getdate())),1,2)   
  39. SET @day1=substring(convert(varchar,datepart(dd,getdate())),1,2)   
  40. -- if len(@month1) <2 set @month1 = '0' + @month1 /* 不足两位的前面加零 */   
  41. -- if len(@day1) <2 set @day1 = '0' + @day1   
  42.   
  43. set @sqlstr='dir '+@filepath+@databaseName+'_'+@month1+'-'+@day1   
  44. EXEC @proc_result = master..xp_cmdshell @sqlstr,no_output   
  45.   
  46. if (@proc_result <>0) /**//*系统存储过程xp_cmdshell返回代码值:0(成功)或1(失败)*/   
  47.   begin   
  48.   set @createdir='md '+@filepath+@databaseName+'_'+@month1+'-'+@day1  /**//*建立文件备份的目录*/   
  49.   EXEC master..xp_cmdshell @createdir,no_output   
  50.   
  51.   set @sqlstr='backup database '+@databaseName+' to disk='''+@filepath+@databaseName+'_'+@month1+'-'+@day1+''+@databaseName+'.bak''' --+' with init'    
  52.   Execute (@sqlstr)  /**//* 备份databaseName数据 */   
  53.     
  54.   set @sqlstr='backup database master to disk='''+@filepath+@databaseName+'_'+@month1+'-'+@day1+'master.bak'''   
  55.   Execute (@sqlstr)  /**//* 备份 master 数据 */   
  56.     
  57.   set @sqlstr='backup database msdb to disk='''+@filepath+@databaseName+'_'+@month1+'-'+@day1+'msdb.bak'''   
  58.   Execute (@sqlstr)  /**//* 备份 msdb 数据 */   
  59.   
  60.   set @flag='Backup database successful.'   
  61.   end   
  62. else   
  63.   set @flag='The directory "'+@databaseName+'_'+@month1+'-'+@day1+'" has been in, backup database unsuccessful.'   
  64.   
  65. print @flag    
  66. END   
  67. END   
  68. GO   
  69.   
  70.   
  71.   
  72. 作业:delete_db_backupfile2pc @databaseName='databaseName',@filepath='filepath'   
  73.   
  74. CREATE PROCEDURE dbo.delete_db_backupfile2pc   
  75.   
  76. @databaseName nvarchar(100)=null,   
  77. @filepath    nvarchar(125)=null   
  78.   
  79. AS   
  80. DECLARE   
  81. @year1  varchar(4),   
  82. @month1  varchar(2),   
  83. @day1  varchar(2),   
  84. @sqlstr  varchar(2000),   
  85. @flag varchar(255),   
  86. @proc_result tinyint /**//*返回系统存储过程xp_cmdshell运行结果*/   
  87. begin   
  88.   
  89. if @databaseName = null or @filepath = null   
  90. set @flag='Variable Error!'   
  91. else   
  92.   begin              
  93.   
  94. --保存7天的数据   
  95. SET @month1 =substring(convert(varchar,datepart(mm,getdate()-7)),1,2)   
  96. SET @day1=substring(convert(varchar,datepart(dd,getdate()-7)),1,2)   
  97.   
  98. -- if len(@month1) <2 set @month1 = '0' + @month1 /* 不足两位的前面加零 */   
  99. -- if len(@day1) <2 set @day1 = '0' + @day1   
  100.   
  101. set @sqlstr='dir '+@filepath+@databaseName+'_'+@month1+'-'+@day1   
  102. EXEC @proc_result = master..xp_cmdshell @sqlstr,no_output   
  103.   
  104. if (@proc_result=0)  /**//*系统存储过程xp_cmdshell返回代码值:0(成功)或1(失败)*/   
  105.   begin   
  106.   set @sqlstr='del '+@filepath+@databaseName+'_'+@month1+'-'+@day1+' /q'   
  107.   exec master..xp_cmdshell @sqlstr,no_output    --删除目录下的文件   
  108.   set @sqlstr='rd '+@filepath+@databaseName+'_'+@month1+'-'+@day1   
  109.   exec master..xp_cmdshell @sqlstr,no_output  --删除目录   
  110.   set @flag='Delete file successful!'   
  111.   end   
  112. else   
  113.   set @flag='Can not find "'+@filepath+@databaseName+'_'+@month1+'-'+@day1+'" file!'   
  114. end   
  115.   print @flag   
  116. end   
  117. GO   

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
定时将服务器中SQL SERVER 2000数据库备份到局域网中另一台电脑上
SQLServer 远程备份和恢复
SQL Server备份数据库清除过期备份的存储过程
Sql经典语句
SQL2005自动备份数据库[转]
SQL Server 大数据搬迁之文件组备份还原实战
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服