专业聊城网站建设、丰富的网站建设制作经验,大量客户案例!服务热线: 15192175820 13346228859 设为首页|加入收藏|关于我们|联系我们
您现在的位置:首页 > 新闻中心 > 建站知识
sql server远程备份和恢复
来源: | 作者:管理员 | 发布时间: 2017-5-17 | 浏览:85次 【关闭此页】 【打印此文

SQLSERVER服务实例名称:192.168.0.2
需要备份的数据库名称:
a
备份机器名称(Client端):192.168.0.3
备份机用户:zf
密码:123
备份机域名:domain
备份机提供备份需求的文件夹:D:\sqlbak

备份数据库

第一步: 在备份机建立共享文件夹
               在程序代码中调用(或者CMD窗口)   net share
sqlbakup=D:\sqlbak     或者用NetShareAdd这个API
              
简要说明:
                       net
share:是WINDOWS内部的网络命令。
                               
作用:建立本地的共享资源,显示当前计算机的共享资源信息。

第二步: 建立共享信用关系
              exec master..xp_cmdshell 'net use  file://192.168.0.3/sqlbak 123
/user:domain\zf'
              简要说明:
                     1:xp_cmdshell
:是SQLSERVER的扩展存储过程。
                             作用:以操作系统命令行解释器的方式执行给定的命令字符串,
并以文本行方式返回任何输出。
                            
语法:参见SQLSERVER联机帮助
                     2:net use :
是WINDOWS内部的网络命令。
                            
作用:将计算机与共享资源连接或断开,或者显示关于计算机连接的信息。

该命令还控制持久网络连接。

第三步:备份数据库
              backup database a   to
disk='\\192.168.0.3\sqlbak\a.bak'
              backup database a   to
disk='\\192.168.0.3\sqlbak\a1.bak' WITH DIFFERENTIAL (差异备份)

第四步: 删除共享文件夹
               在程序代码中调用(或者CMD窗口)   net share
sqlbakup/delete
               或者用NetShareDel这个API

恢复数据库

restore database a   from
disk='\\192.168.0.3\sqlbak\a.bak'
      
      以下是差异还原
      restore
database scs   from disk='\\192.168.0.3\sqlbak\a.bak'   WITH NORECOVERY
     
restore database scs   from disk='\\192.168.0.3\sqlbak\a1.bak'   WITH
NORECOVERY
      restore database scs   from
disk='\\192.168.0.3\sqlbak\a2.bak'

 

 

【方法之二】

在一些涉及到数据库的项目中,经常会有定时备份数据库的需要。定时备份到本机的话,还是挺容易的,计划任务就可以完成,但如果是整机挂了,那备份到本机是没意义的,那么就需要来考虑备份到局域网中,其它电脑里。

一开始我想得挺简单的,把远程的一个共享文件夹,映射到本地作为一个磁盘,使用 SQL Server 自带的备份功能去备份就好了。但实际操作下来,会发现根本就没有这个磁盘可以给你选,使用 SQL 语句来备份的话,也会提示错误。咋办呢?

网上找了很多的远程备份的方法,许多都用不了,有的还用 FTP 去上传… 这个超出了我们的需求,没必要了。下面就分享一份在网上找了之后,自己再简单整理过的代码,配合 SQL Server 代理中的作业功能,已经稳定运行一个星期了,每小时就备份一次。


 -- 创建网络映射(Y是盘符;IP地址后面要带共享文件夹的名称;password是密码,双引号引起;account是远程电脑的登录名)

exec master..xp_cmdshell 'net use Y: \\192.168.0.69\sqlbackup "password" /user:192.168.0.69\account'

 -- 按日期时间做文件名(注意路径中的文件夹,需要先建立好)

)

),'-',''),' ','-'),':','') + '.bak'

 -- 执行备份(DB是要备份的数据库名称)

backup database [DB] to disk = @filename

 

-- 删除网络映射(Y是盘符,同上)

exec master..xp_cmdshell 'net use Y: /delete'

 

-- ABEL.CNBLOGS.COM

-- 2013-07-14


 

需要注意的是,SQL Server 要开启允许执行 cmd 命令。

我试过把网络映射保留着,不要删除,可是到了 backup database 的时候还是失败了,只能每次要备份都创建,然后再删除。如果有朋友知道是为什么,欢迎交流~~

 

 

    标签:
    分享到:
    上一条: 页面布局中block,inline和inline-block概念和区别
    下一条: 【百度课堂】URL构成越简单越平常越好
    网站首页| 网站建设 手机网站| 微信营销| 经典案例| 解决方案| 网站推广| 新闻资讯| 关于我们| 售后服务| 联系我们