注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

God is U 做自己的上帝

富原孤島--只发优质级的文章

 
 
 

日志

 
 

用存储过程实现MSSQL数据的网络异地备份  

2009-05-31 08:21:11|  分类: [数据库裤] |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

////be from internet

用存储过程实现MSSQL数据的网络异地备份收藏

 MSSQL的异地远程存储,SQLServer备到FileServer
环境:
win2k+sqlserver 2K SP3
 backup database msdb to disk=’computer estfilename.bak’ --(注意大小写)

如果SQL异地备份失败,归根结底是权限问题!

 那么你的SQLServer的启动用户必须在FileServer上有足够的权限!

1SQLServer上新建一SQLUser用户权限大一点。

2FileServer上建同一用户对某一文件夹有足够权限,就是在两台机器上建相同的用户名和密码,然后与这个用户名登入电脑。

3、两机的SQLUser密码相同(方便一点)
4
、将SQLServer改为SQLUser启动
   (管理工具-->服务-->mssql-->属性-->指定用户及密码,是计算机的登入用户名)

5backup database 数据库 to disk=192.168.*.*文件夹ShareBak.Bak’就可以了。

作业:db_backup2pc @databaseName='databaseName',@filepath='filepath'

CREATE PROCEDURE dbo.db_backup2pc

@databaseName  nvarchar(100= null--数据库名
@filepath               nvarchar(125= null  --文件保存路径(IP+隐藏共享+)

AS
BEGIN
DECLARE
 
@year1   varchar(4),
 
@month1   varchar(2),
 
@day1   varchar(2),
 
@flag   varchar(255),
 
@proc_result tinyint,  /**//*返回系统存储过程xp_cmdshell运行结果*/
 
@sqlstr   varchar(2000),
 
@createdir varchar(255)   /**//*建立文件备份的目录*/

begin
             
-- Get year & month &day fromat of the day before yesterday
-- SET @year1 = substring(convert(varchar,datepart(yyyy,getdate()-2)),3,2)
 SET @month1 =substring(convert(varchar,datepart(mm,getdate())),1,2)
 
SET @day1=substring(convert(varchar,datepart(dd,getdate())),1,2
 
-- if len(@month1)<2 set @month1 = '0' + @month1 /* 不足两位的前面加零 */
 -- if len(@day1)<2 set @day1 = '0' + @day1 
 
 
set @sqlstr='dir '+@filepath+@databaseName+'_'+@month1+'-'+@day1
 
EXEC @proc_result = master..xp_cmdshell @sqlstr,no_output
 
 
if (@proc_result<>0/**//*系统存储过程xp_cmdshell返回代码值:0(成功)或1(失败)*/
  
begin
   
set @createdir='md '+@filepath+@databaseName+'_'+@month1+'-'+@day1  /**//*建立文件备份的目录*/
   
EXEC master..xp_cmdshell @createdir,no_output

   
set @sqlstr='backup database '+@databaseName+' to disk='''+@filepath+@databaseName+'_'+@month1+'-'+@day1+''+@databaseName+'.bak''' --+' with init'   
   Execute (@sqlstr)  /**//* 备份databaseName数据 */
   
   
set @sqlstr='backup database master to disk='''+@filepath+@databaseName+'_'+@month1+'-'+@day1+'master.bak'''
   
Execute (@sqlstr)  /**//* 备份 master 数据 */
   
   
set @sqlstr='backup database msdb to disk='''+@filepath+@databaseName+'_'+@month1+'-'+@day1+'msdb.bak'''
   
Execute (@sqlstr)  /**//* 备份 msdb 数据 */

   
set @flag='Backup database successful.'
  
end
 
else
  
set @flag='The directory "'+@databaseName+'_'+@month1+'-'+@day1+'" has been in, backup database unsuccessful.' 

 
print @flag  
END
END
GO

 

作业:delete_db_backupfile2pc @databaseName='databaseName',@filepath='filepath'

CREATE PROCEDURE dbo.delete_db_backupfile2pc

@databaseName nvarchar(100)=null,
@filepath     nvarchar(125)=null

AS
DECLARE
 
@year1   varchar(4),
 
@month1   varchar(2),
 
@day1   varchar(2),
 
@sqlstr   varchar(2000),
 
@flag varchar(255),
 
@proc_result tinyint /**//*返回系统存储过程xp_cmdshell运行结果*/
begin

 
if @databaseName = null or @filepath = null 
 
set @flag='Variable Error!'
 
else
  
begin             

--保存7天的数据
 SET @month1 =substring(convert(varchar,datepart(mm,getdate()-7)),1,2)
 
SET @day1=substring(convert(varchar,datepart(dd,getdate()-7)),1,2)

 
-- if len(@month1)<2 set @month1 = '0' + @month1 /* 不足两位的前面加零 */
 -- if len(@day1)<2 set @day1 = '0' + @day1 

 
set @sqlstr='dir '+@filepath+@databaseName+'_'+@month1+'-'+@day1
 
EXEC @proc_result = master..xp_cmdshell @sqlstr,no_output

 
if (@proc_result=0)  /**//*系统存储过程xp_cmdshell返回代码值:0(成功)或1(失败)*/
  
begin
   
set @sqlstr='del '+@filepath+@databaseName+'_'+@month1+'-'+@day1+' /q'
   
exec master..xp_cmdshell @sqlstr,no_output    --删除目录下的文件
   set @sqlstr='rd '+@filepath+@databaseName+'_'+@month1+'-'+@day1
   
exec master..xp_cmdshell @sqlstr,no_output   --删除目录
   set @flag='Delete file successful'
  
end
 
else
  
set @flag='Can not find "'+@filepath+@databaseName+'_'+@month1+'-'+@day1+'" file'
 
end 
  
print @flag 
end
GO

 

 博主其它精彩文章:

  • 谷歌寻找下一个“谷歌”   2011-07-25 10:17:57
  • 淘宝宣布分拆成三独立公司   2011-07-25 10:15:14
  • 富士康全渠道产业链条被割裂   2011-07-25 10:13:04
  • 高铁反思录:“磨合”的代价   2011-07-25 10:10:12
  • 股市圈钱的最大闸门已经开启   2011-07-23 16:15:08
  • 中国急需一场局部战争化解危局!   2011-07-23 14:35:29
  • 全国8年来72名亿万富翁死亡   2011-07-23 13:35:22
  • “威风哥”城管上班执法下班载客   2011-07-23 11:13:11
  • 首尔地铁:防性侵犯开女性车厢   2011-07-23 11:07:35
  • “厦门特大走私案”始末   2011-07-23 11:03:09
  • Godisu推荐阅读:
      评论这张
     
    阅读(284)| 评论(0)
    推荐 转载

    历史上的今天

    在LOFTER的更多文章

    评论

    <#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
     
     
     
     
     
     
     
     
     
     
     
     
     
     

    页脚

    网易公司版权所有 ©1997-2017