sqlserver存储过程:使用SQLSERVER的扩展存储过程实现远程备份和恢复

最近我在为公司框架(以数据应用为导向应用体系)做数据管理模块这个模块需求比较简单:备份、恢复和清理日志我公司软件Software基本上以C/S为基本架构所以数据管理模块中两个主要功能‘备份和恢复’都可能会在Client端操作备份和恢复’文件也都有可能存储在client端因而这个数据管理模块就必须能够实现在远程备份和恢复数据库

  文章前提阐述完了就该说说如何具体实现吧其实都很简单我想写个远程备份测试例子
给大家看,就能够很清楚描述吧!
  例子介绍说明:
           环境:win2k+sqlserver 2K+查询分析器
           SQLSERVER服务例子名称:server
           需要备份数据库名称: msdb
           本地机器名称(Client端):david
           本地用户:zf 密码:123
           本地域名:do
           本地提供备份需求文件夹:e:\test

  第步: 建立共享文件夹
     在代码中(或者CMD窗口)  net share test=e:\test
     或者用NetShareAdd这个API
     简要介绍说明:
            net share     : 是WINDOWS内部网络命令
                            作用:建立本地共享资源显示当前计算机共享资源信息
                            语法:参见 net share /?  
  第 2步: 建立共享信用关系
     master..xp_cmdshell 'net use  \\david\test 123 /user:do\zf'
     简要介绍说明:
           1:xp_cmdshell :是SQLSERVER扩展存储过程
                            作用以操作系统命令行解释器方式执行给定命令
                            并以文本行方式返回任何输出
                            语法:参见SQLSERVER联机帮助
           2:net use      : 是WINDOWS内部网络命令
                            作用将计算机和共享资源连接或断开或者显示有关计算机
                            连接信息该命令还控制持久网络连接
                            语法:参见 net use /?

  第 3步:备份数据库
     backup database msdb to disk='\\david\test\msdb.bak'
     这个不需要介绍说明吧语法参见SQLSERVER联机帮助

  第 4步: 删除共享文件夹
     在代码中(或者CMD窗口)  net share test /delete
     或者用NetShareDel这个API
  结果:
      已处理 1376 页这些页属于数据库 'msdb' 文件 'MSDBData'(位于文件 1 上)
      已处理 1 页这些页属于数据库 'msdb' 文件 'MSDBLog'(位于文件 1 上)
      BACKUP DATABASE 操作成功地处理了 1377 页花费了 3.653 秒(3.086 MB/秒)

  这样server服务器上msdb就备份到了david机器E:\test\msdb.bak文件了使用起来很简单吧?恢复数据库操作也是只要将第 3个步骤语句改为'restore database msdb from disk='\\david\test\msdb.bak'就可以啦你看完了也可以试试呀?!(最简单测试工具查询分析器+CMD窗口)

备注:xp_cmdshell 这个扩展存储过程只能SA级别用户而且是SQLSERVER安全隐患的许多DBA都喜欢将其删除或者禁用所以开发人员使用时要倍加小心哦
     文章中例子只是简要介绍说明了应如何利用扩展存储过程实现远程备份和恢复没有涉及安全以及其他方面考虑希望读者在代码中自行完善



  • 篇文章: MS04-011远程缓冲区溢出代码

  • 篇文章: 如何迅速成为Java高手!
  • Tags:  sqlserver备份 sqlserver远程访问 sqlserver自动备份 sqlserver存储过程

    延伸阅读

    最新评论

    发表评论