上善若水,厚德载物

make better and better

导航

Asp.net备份oracle数据库

  项目中需要在网站的后台管理中,备份oracle数据库,在服务器上制定目录备份并提供给客户端下载。

 

一、使用Process类,调用cmd.exe,其中command字符形式 

 

String.Format(" exp {0}/{1}@{2} file={3} full=y", userName, pwd, dataService, filePath)

 

 

代码
 1 Protected Sub RunCmd(ByVal command As String)
 2         Dim cmd As New Process
 3         '获得系统信息,使用的是 systeminfo.exe 这个控制台程序
 4         cmd.StartInfo.FileName = "cmd.exe"
 5         cmd.StartInfo.Arguments = "/c " & command
 6         '将cmd的标准输入和输出全部重定向到.NET的程序里
 7         cmd.StartInfo.UseShellExecute = False '此处必须为false否则引发异常
 8         cmd.StartInfo.RedirectStandardInput = True  '标准输入
 9         cmd.StartInfo.RedirectStandardOutput = True  '标准输出
10         '不显示命令行窗口界面
11         cmd.StartInfo.CreateNoWindow = True
12         cmd.StartInfo.WindowStyle = ProcessWindowStyle.Hidden
13 
14         cmd.Start() '启动进程
15 
16         '获取输出
17         '需要说明的:此处是指明开始获取,要获取的内容,
18         '只有等进程退出后才能真正拿到
19         cmd.StandardOutput.ReadToEnd()
20 
21         cmd.WaitForExit() '等待控制台程序执行完成
22         cmd.Close() '关闭该进程
23     End Sub

 

 

注意相应文件夹要有写的权限,程序在调试时,能够生成备份文件,但发布到IIS上之后,不能生成备份文件。

原因是默认情况下,IIS不允许调用cmd.exe,需要设置machine.config文件,修改权限

在<System.Web>配直节下,增加<processModel userName="SYSTEM" enable="true" />

重新启动电脑,备份成功,功能是实现了,但大家要注意这样设置后,服务器安全方面很危险,请谨慎!!!

 

 

posted on 2010-03-24 14:19  Blues T  阅读(630)  评论(0编辑  收藏  举报