="t18"> 最近我在为公司
![](/icons/92275de.gif)
框架
![](/icons/92275chengxu.gif)
(以数据应用为导向
![](/icons/92275de.gif)
应用体系)做数据管理模块
![](/icons/92275dou.gif)
这个模块
![](/icons/92275de.gif)
需求比较简单:备份、恢复和清理日志
![](/icons/92275dou2.gif)
我公司
![](/icons/92275de.gif)
软件Software基本上以C/S为基本架构
![](/icons/92275dou.gif)
所以数据管理模块中两个主要
![](/icons/92275de.gif)
功能‘备份和恢复’都可能会在Client端操作
![](/icons/92275dou.gif)
备份和恢复’
![](/icons/92275de.gif)
文件也都有可能存储在client端
![](/icons/92275dou.gif)
因而这个数据管理模块就必须能够实现在远程备份和恢复数据库
![](/icons/92275dou2.gif)
文章
![](/icons/92275de.gif)
前提阐述完了
![](/icons/92275dou.gif)
就该说说如何具体实现吧
![](/icons/92275dou2.gif)
其实都很简单
![](/icons/92275dou.gif)
我想写个远程备份
![](/icons/92275de.gif)
测试例子
给大家看,就能够很清楚
![](/icons/92275de.gif)
描述吧!
例子介绍说明:
环境:win2k+sqlserver 2K+查询分析器
SQLSERVER服务例子名称:
![](/icons/92275main.gif)
server
需要备份
![](/icons/92275de.gif)
数据库名称: msdb
本地机器名称(Client端):david
本地用户:zf 密码:123
本地域名:do
![](/icons/92275main.gif)
本地提供备份需求
![](/icons/92275de.gif)
文件夹:e:\test
第
![](/icons/92275yi.gif)
步: 建立共享文件夹
在
![](/icons/92275chengxu.gif)
代码中
![](/icons/92275diaoyong.gif)
(或者CMD窗口) net share test=e:\test
或者用NetShareAdd这个API
简要介绍说明:
net share : 是WINDOWS内部
![](/icons/92275de.gif)
网络命令
![](/icons/92275dou2.gif)
作用:建立本地
![](/icons/92275de.gif)
共享资源
![](/icons/92275dou.gif)
显示当前计算机
![](/icons/92275de.gif)
共享资源信息
![](/icons/92275dou2.gif)
语法:参见 net share /?
第 2步: 建立共享信用关系
master..xp_cmdshell 'net use \\david\test 123 /user:do
![](/icons/92275main.gif)
\zf'
简要介绍说明:
1:xp_cmdshell :是SQLSERVER
![](/icons/92275de.gif)
扩展存储过程
![](/icons/92275dou2.gif)
作用
![](/icons/92275dou.gif)
以操作系统命令行解释器
![](/icons/92275de.gif)
方式执行给定
![](/icons/92275de.gif)
命令
![](/icons/92275zifu.gif)
串
![](/icons/92275dou.gif)
并以文本行方式返回任何输出
![](/icons/92275dou2.gif)
语法:参见SQLSERVER联机帮助
2:net use : 是WINDOWS内部
![](/icons/92275de.gif)
网络命令
![](/icons/92275dou2.gif)
作用
![](/icons/92275dou.gif)
将计算机和共享资源连接或断开
![](/icons/92275dou.gif)
或者显示有关计算机
连接
![](/icons/92275de.gif)
信息
![](/icons/92275dou2.gif)
该命令还控制持久网络连接
![](/icons/92275dou2.gif)
语法:参见 net use /?
第 3步:备份数据库
backup database msdb to disk='\\david\test\msdb.bak'
这个不需要介绍说明吧
![](/icons/92275dou.gif)
语法参见SQLSERVER联机帮助
第 4步: 删除共享文件夹
在
![](/icons/92275chengxu.gif)
代码中
![](/icons/92275diaoyong.gif)
(或者CMD窗口) net share test /delete
或者用NetShareDel这个API
结果:
已处理 1376 页
![](/icons/92275dou.gif)
这些页属于数据库 'msdb'
![](/icons/92275de.gif)
文件 'MSDBData'(位于文件 1 上)
![](/icons/92275dou2.gif)
已处理 1 页
![](/icons/92275dou.gif)
这些页属于数据库 'msdb'
![](/icons/92275de.gif)
文件 'MSDBLog'(位于文件 1 上)
![](/icons/92275dou2.gif)
BACKUP DATABASE 操作成功地处理了 1377 页
![](/icons/92275dou.gif)
花费了 3.653 秒(3.086 MB/秒)
![](/icons/92275dou2.gif)
这样
![](/icons/92275main.gif)
server服务器上
![](/icons/92275de.gif)
msdb就备份到了david机器
![](/icons/92275de.gif)
E:\test\msdb.bak文件了
![](/icons/92275dou.gif)
使用起来很简单吧?恢复数据库操作也是
![](/icons/92275yi.gif)
样
![](/icons/92275dou.gif)
只要将第 3个步骤
![](/icons/92275de.gif)
语句改为'restore database msdb from disk='\\david\test\msdb.bak'就可以啦
![](/icons/92275dou2.gif)
![](/icons/92275dou2.gif)
你看完了也可以试试呀?!(最简单
![](/icons/92275de.gif)
测试工具查询分析器+CMD窗口)
备注:xp_cmdshell 这个扩展存储过程只能SA级别
![](/icons/92275de.gif)
用户
![](/icons/92275diaoyong.gif)
![](/icons/92275dou.gif)
而且是SQLSERVER
![](/icons/92275de.gif)
安全隐患的
![](/icons/92275yi.gif)
![](/icons/92275dou.gif)
许多DBA都喜欢将其删除或者禁用
![](/icons/92275dou.gif)
所以开发人员使用时要倍加小心哦
![](/icons/92275dou2.gif)
文章中
![](/icons/92275de.gif)
例子只是简要
![](/icons/92275de.gif)
介绍说明了应如何利用扩展存储过程实现远程备份和恢复
![](/icons/92275dou.gif)
没有涉及安全以及其他方面
![](/icons/92275de.gif)
考虑
![](/icons/92275dou.gif)
希望读者在代码中自行完善
延伸阅读
最新评论