c#winform中怎么实现oracle数据库的备份还原
1个回答
推荐于2016-02-22 · 知道合伙人数码行家
关注
展开全部
(2) 通过把相应的脚本文件作为资源文件嵌入到项目中,然后通过ADO.net来执行
(3) 通过调用SQL Server的sp_attach_db的存储过程来直接附加数据库。2.1 通过调用osql来执行数据库脚本文件 从上面的例子我们已经知道了如何传递值,那么我们只要在项目文件中程序段中执行osql即可。
这里有一个问题就是从什么地方找到数据库的脚本文件。我们可以把脚本文件放到文件系统中,直接安装到用户机器上,并可以通过如下方法获得到该文件的位置。
Assembly asm=Assembly.GetExecutingAssembly();
String setuppath=asm.Location;
这样我们就可以知道脚本文件的位置了,下面的文件就是如何启动osql程序了。我们可以通过如下的代码段来完成:
Process sqlprocess=new Process(); sqlprocess.StartInfo.FileName="osql.exe";
sqlprocess.StartInfo.Arguments=String.Format("-U {0} -P {1} -S {2} -i {3}",this.uid,this.pwd,this.serverip,this.spath); //uid 为用户名,pwd为密码,serverip为目标服务器的ip,spath为数据库脚本所在的路径
sqlprocess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
sqlprocess.Start();
sqlprocess.WaitForExit(); //等待程序执行
sqlprocess.Close();
从上面可以知道,该方法必须要求安装程序的客户机以及安装好了SQL Server才能使用(osql为安装了SQL Server后提供的命令行下的程序).同时在实际的测试过程中,我们发现如果对于用户在安装程序是选择带有空格的路径,如;C:\program files\yourappliaction\时,安装失败。这个是一个比较严重的问题。2.2 通过把脚本文件作为资源文件载入 从前面的讨论中我们可以看到,直接使用ADO.net执行时比较麻烦,需要一句句执行,如果使用脚本,数据库中生成的脚本中有”GO”命令,在ADO.net中执行时会出问题。因此,根据对数据库安装脚本的分析,我们可以采用如下替代方案。
在数据库的安装过程中,无外乎如下几个部分:
(1) 创建数据库
(2) 创建表
(3) 创建试图或者存储过程
并且这三个部分是有先后顺序的,顺序不能颠倒,但是每个过程中没有顺序关系。在测试过程中我们发现可以在一条语句中创建多个表或者多个存储过程。也就是说,我们可以把执行过程按照上面的顺序执行就行了。并且我们把数据库脚本作为资源文件嵌入,只要调入执行就可以了,这样就达到了简化创建一条条命令的过程。
获得资源文件代码如下:
Assembly Asm=Assembly.GetExecutingAssembly();
StreamReader str;
str=new StreamReader(Asm.GetManifestResourceStream(Asm.GetName().Name+"."+filename))// filename为你需要摘入的资源文件。作为资源文件时,只要把文件导入到您的项目中,并且把生成操作改为嵌入的资源即可。
这里我们是直接获得了该文件的文件流,因此直接把该流中的内容读入即可。
我们可以通过如下操作完成:
(1) 建立一个数据库的链接,创建数据库. 比如: connectionstring=”server=127.0.0.1,uid=sa,pwd=pwd”;
(2) 重新创建一个数据库链接,该链接指向创建的数据库。connectionstring=”server=127.0.0.1,uid=sa,pwd=pwd,database=yourdatabase”;
(3) 在新的链接中执行创建数据表和数据存储过程的代码即可。需要注意的是:不要在你的脚本中有GO命名,其他命令都可以直接执行。
该方法的好处在于: 可以不要求安装的目标机上有SQL Server,也不存在因为文件路径中有空格的问题而倒是安装程序失败。当然,如果您的数据库为Oracle或者DB2等,您也可以采用类似的方法来实现。2.3 通过sp_attach_db来创建数据库通过上面的讨论我们已经很清楚如何安装数据库了。在安装数据库的过程中,我们除了可以通过数据库脚本来创建数据库之外,我们也可以通过SQL Server的系统存储过程sp_attach_db来附加数据库。
这里我们解决两个问题即可:
(1) 确定数据库文件(.mdf和.ldf)的位置。
(2) 执行存储过程。对于问题1我们可以借鉴安装数据的第一种方法,即把.mdf和.ldf通过文件系统安装到目标机上,然后通过
Assembly asm=Assembly.GetExecutingAssembly();
String setuppath=asm.Location;
获得文件的路径。最后通过调用sp_attach_db 加上相应的参数即可完成。
需要注意的是: 该方法也只能针对数据库安装在本机的情况下进行安装。
(3) 通过调用SQL Server的sp_attach_db的存储过程来直接附加数据库。2.1 通过调用osql来执行数据库脚本文件 从上面的例子我们已经知道了如何传递值,那么我们只要在项目文件中程序段中执行osql即可。
这里有一个问题就是从什么地方找到数据库的脚本文件。我们可以把脚本文件放到文件系统中,直接安装到用户机器上,并可以通过如下方法获得到该文件的位置。
Assembly asm=Assembly.GetExecutingAssembly();
String setuppath=asm.Location;
这样我们就可以知道脚本文件的位置了,下面的文件就是如何启动osql程序了。我们可以通过如下的代码段来完成:
Process sqlprocess=new Process(); sqlprocess.StartInfo.FileName="osql.exe";
sqlprocess.StartInfo.Arguments=String.Format("-U {0} -P {1} -S {2} -i {3}",this.uid,this.pwd,this.serverip,this.spath); //uid 为用户名,pwd为密码,serverip为目标服务器的ip,spath为数据库脚本所在的路径
sqlprocess.StartInfo.WindowStyle=ProcessWindowStyle.Hidden;
sqlprocess.Start();
sqlprocess.WaitForExit(); //等待程序执行
sqlprocess.Close();
从上面可以知道,该方法必须要求安装程序的客户机以及安装好了SQL Server才能使用(osql为安装了SQL Server后提供的命令行下的程序).同时在实际的测试过程中,我们发现如果对于用户在安装程序是选择带有空格的路径,如;C:\program files\yourappliaction\时,安装失败。这个是一个比较严重的问题。2.2 通过把脚本文件作为资源文件载入 从前面的讨论中我们可以看到,直接使用ADO.net执行时比较麻烦,需要一句句执行,如果使用脚本,数据库中生成的脚本中有”GO”命令,在ADO.net中执行时会出问题。因此,根据对数据库安装脚本的分析,我们可以采用如下替代方案。
在数据库的安装过程中,无外乎如下几个部分:
(1) 创建数据库
(2) 创建表
(3) 创建试图或者存储过程
并且这三个部分是有先后顺序的,顺序不能颠倒,但是每个过程中没有顺序关系。在测试过程中我们发现可以在一条语句中创建多个表或者多个存储过程。也就是说,我们可以把执行过程按照上面的顺序执行就行了。并且我们把数据库脚本作为资源文件嵌入,只要调入执行就可以了,这样就达到了简化创建一条条命令的过程。
获得资源文件代码如下:
Assembly Asm=Assembly.GetExecutingAssembly();
StreamReader str;
str=new StreamReader(Asm.GetManifestResourceStream(Asm.GetName().Name+"."+filename))// filename为你需要摘入的资源文件。作为资源文件时,只要把文件导入到您的项目中,并且把生成操作改为嵌入的资源即可。
这里我们是直接获得了该文件的文件流,因此直接把该流中的内容读入即可。
我们可以通过如下操作完成:
(1) 建立一个数据库的链接,创建数据库. 比如: connectionstring=”server=127.0.0.1,uid=sa,pwd=pwd”;
(2) 重新创建一个数据库链接,该链接指向创建的数据库。connectionstring=”server=127.0.0.1,uid=sa,pwd=pwd,database=yourdatabase”;
(3) 在新的链接中执行创建数据表和数据存储过程的代码即可。需要注意的是:不要在你的脚本中有GO命名,其他命令都可以直接执行。
该方法的好处在于: 可以不要求安装的目标机上有SQL Server,也不存在因为文件路径中有空格的问题而倒是安装程序失败。当然,如果您的数据库为Oracle或者DB2等,您也可以采用类似的方法来实现。2.3 通过sp_attach_db来创建数据库通过上面的讨论我们已经很清楚如何安装数据库了。在安装数据库的过程中,我们除了可以通过数据库脚本来创建数据库之外,我们也可以通过SQL Server的系统存储过程sp_attach_db来附加数据库。
这里我们解决两个问题即可:
(1) 确定数据库文件(.mdf和.ldf)的位置。
(2) 执行存储过程。对于问题1我们可以借鉴安装数据的第一种方法,即把.mdf和.ldf通过文件系统安装到目标机上,然后通过
Assembly asm=Assembly.GetExecutingAssembly();
String setuppath=asm.Location;
获得文件的路径。最后通过调用sp_attach_db 加上相应的参数即可完成。
需要注意的是: 该方法也只能针对数据库安装在本机的情况下进行安装。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询