不关闭WINFORM下对数据库复制操作,出异常:正由另一进程使用,因此该进程无法访问此文件。

问题描述

我做了个WINFORM程序,里面有个DataGridView,可以获取SQL数据库的数据,并显示出来。现在想做个数据库备份功能,就是对数据库文件MDF和LDF两个文件进行拷贝操作,但只要WINFORM程序一开始运行,对这个文件的读取FileStreamfs=File.OpenRead(文件路径);这句话就会出IO异常:正由另一进程使用,因此该进程无法访问此文件。但只要关了WINFORM,就可以对他目录下的数据库文件随便复制粘贴了。麻烦大家帮忙想想办法,在不关闭WINFORM前提下对那两个数据库文件进行复制操作。

解决方案

解决方案二:
因为你的程序在使用数据库,断开连接才可以
解决方案三:
你的程序正在使用数据库啊。
解决方案四:
我知道在占用,但即使我写在Program.cs里,staticvoidMain(){FileCopy.CopyDir();boolbCreatedNew;Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Mutexm=newMutex(false,"Fly",outbCreatedNew);if(bCreatedNew){Application.Run(newMainForm());}}FileCopy.CopyDir()这个方法就是复制数据库文件到另一个地方,也会出现同样错误,试了好多方法,都不管用。
解决方案五:
对于SQl的库,没有分离的数据库文件是不能执行“复制”的操作的吧?要想进行“复制”操作应该先分离数据库吧?lz你在使用者数据库的同时还想进行这种操作,应该是不行的吧你打开着一个Word文件,对这个文件也是不能进行这个操作的吧
解决方案六:
难道就没有办法了吗?我在程序的哪个地方锁定这个程序被占用了呢?能不能先停止下占用呢??我就想不明白了,为啥在Main()里面最上面写的这个方法,也会出现同样的错误,根本还没有被使用~希望明白的朋友帮忙解释一下:)啊~受不了!KMN!
解决方案七:
只要关了WINFORM,就可以对他目录下的数据库文件随便复制粘贴了。这个不能吧,还没分离不会让你随便拷的。可以用sql语句备份数据库啊生成bak文件
解决方案八:
备份数据库不是这么备份的啊,大哥
解决方案九:
执行sql语句BACKUPDATABASE数据库名称TODISK='c:数据库备份.bak'

解决方案十:
我倒是也想引用SQLDMO.DLL来进行数据库备份,但目标电脑不一定有SQLDMO,而且不一定进行了REGSRV32注册,如果直接复制数据库文件,会方便的多,毕竟数据库不大,最多时才20万条数据。如果用存储过程,也会有变故,而且我用的是LINQTOSQL,没必要这么麻烦。高手们,麻烦想想办法吧,大过年的,辛苦了。
解决方案十一:
用sql语句,不是说了吗
解决方案十二:
LINQTOSQL也是可以执行sql语句的.
解决方案十三:
数据库没有分离无法复制哪怕你直接ctrl+C然后粘贴都不行
解决方案十四:
我发现,如果KILL掉servr.exe进程,就可以复制粘贴了。但系统有两个servr.exe进程,杀掉用户那个才可以,杀掉系统那个或两个都杀掉,就不行了。如果只kill掉用户进程servr.exe??
解决方案十五:
你个笨蛋,思路太死了去建立个数据库再把你的表复制过去没有表就建立个简单的sql语句全部搞定干嘛搞这么复杂?解决不了绕过去
解决方案:
对了你这个问题可能是由于adatper造成的,他要把数据库的数据读取到dataset中,还要把dataset中修改后的数据再返回到数据库,所以这个时候复制时不容许的,但是把update功能去掉我觉得能行你也可以试试
解决方案:
我不知道如何表达我的想法了。你结束进程当然能复制了,结束进程。sqlserver的服务也给停止了!!!这种情况是绝对不允许的。
解决方案:
直接把网下扯了在吧服务关了再启动去通过工具备份不建议这样做最好用命令备份
解决方案:
允许复制时暂停服务的话就先停掉SQL服务,然后复制黏贴ldf和mdf,再重启动服务。否则还是Backup-Restore大法吧。我觉得这样设计是合理的,因为复制文件总会有时间差,这个时间差内要如何保证数据信息和日志信息是绝对一致的呢?貌似也只能停服务了。
解决方案:
其实真的可以绕过去引用14楼zbq666的回复:

你个笨蛋,思路太死了去建立个数据库再把你的表复制过去没有表就建立个简单的sql语句全部搞定干嘛搞这么复杂?解决不了绕过去

解决方案:
引用楼主mecaser的回复:

云计算能为企业数据中心带来哪...如何评判一个系统是否有必要迁...云计算中的网络新技术应用?云存储架构是怎样的?云计划的云字什么含义?我做了个WINFORM程序,里面有个DataGridView,可以获取SQL数据库的数据,并显示出来。现在想做个数据库备份功能,就是对数据库文件MDF和LDF两个文件进行拷贝操作,但只要WINFORM程序一开始运行,对这个文件的读取……

呵呵ls给的思路在你的程序中通过第三方库,直接由SQL语句分离你的目标数据库,完后复制到你所谓的备份处然后再执行Sql语句把你的库在给附加上变态的需要往往要用变态的方法来搞
解决方案:
你可已把硬盘拆下来,挂到别的电脑上复制完了.再拆回来
解决方案:
不需要断开链接的方法:去建立个数据库再把你的表复制过去或者用ado.net断开链接也不会影响前台使用.意思是把数据复制到内存.断开链接.备份.重新链接.
解决方案:
你的那种想法我实现过了,做了一个类似SqlServer管理器的东西,也能列出数据库对象。在这里面进行各种操作,包括你说的那种备份物理文件。其实在备份开始还是用代码将数据库文件进行了分离,备份完后再用代码附加上去。这是肯定的,也就是意味着没有人在使用这个库了,才由你备份。否则不可能备份物理文件的。

时间: 2024-12-05 07:03:43

不关闭WINFORM下对数据库复制操作,出异常:正由另一进程使用,因此该进程无法访问此文件。的相关文章

linux开发平台下对数据库进行操作

问题描述 linux开发平台下对数据库进行操作 本人小白,跪求大神指点如何对数据库进行操作?以及如何实现对数据库的优化 解决方案 1.显示数据库 show databases; 2.选择数据库 use 数据库名; 3.显示数据库中的表 show tables; 4.显示数据表的结构 describe 表名; 5.显示表中记录 SELECT * FROM 表名 6.建库 create databse 库名; 7.建表 复制代码 create table 表名 (字段设定列表): mysql> cr

Linux系统下Oracle数据库的安装和启动关闭操作教程_oracle

1.准备: df -H   查看空间剩余   一般准备最少5G 2.查看swap分区大小 du -sh /tmp/     最少400M 3. 建组建用户 groupadd dba -g 111 groupadd oinstall -g 110 useradd oracle -u -110 -g 110 -G 111 passwd oracle --stdin 4. 设置参数 su - oracle vi .bash_profile export ORACLE_BASE=/u01/oracle

winform中树和数据库关联操作的例子(C#)

数据|数据库 winform下树和数据库关联操作是很常用的,下面的代码是项目中用到的,从一个表生成树: DataView?dvTree;????????private?void?InitTreeByDataSet(?TreeNodeCollection?nds,?string?parentID,?DataSet?ds?)????????{????????????dvTree?=?new?DataView();????????????????????????TreeNode?tempNode;??

mysql在cmd命令下执行数据库操作

windows+r 运行cmd命令,执行以下操作! 当mysql 数据库文件相对于来说比较大的时候,这个时候你可能在正常环境下的mysql中是导入不进去的,因为mysql数据库本身就有默认的导入文件大小 , 这个时候就要用到 cmd命令去操作mysql数据库了 , 以下我就简单介绍下 , 如何去对mysql 数据库 进行增删改查的操作! 操作一: cd D:\phpStudy\MySQL\bin //使用cd 命令进行查找 mysql 下的bin文件 找到你的安装目录查找即可 操作二: mysq

access数据库-C#连接Access数据库insert操作时,debug目录下临时数据库修改了,但是原数据库不变。

问题描述 C#连接Access数据库insert操作时,debug目录下临时数据库修改了,但是原数据库不变. 尝试把accdb放在debug文件下下过,但是我导入时它自动就会在项目文件夹里复制过去一个数据库文件.insert操作时,显示插入的信息是成功的,并且当时可以搜索到该数据,但重新运行程序后,以前的数据未被保存. App.config < ?xml version="1.0" encoding="utf-8" ?> < configurati

winform下水晶报表提示数据库登录[仅客户端提示,开发程序的机子不会出现此总量]

问题描述 winform下水晶报表提示数据库登录[仅客户端提示,开发程序的机子不会出现此总量] 解决方案 解决方案二:连接数据库问题是不是连接字符串写的有问题解决方案三:提示"您访问的资源不存在",,,解决方案四:开发主机就不会存在,但安装在客户机子就会出现此问题解决方案五:DataSetdsrpt=newDataSet();dsrpt=Ds.Copy();dsrpt.Tables[0].DefaultView.RowFilter="OrderID='"+Order

.NET 下的数据库操作类库(MyADO)

ado|数据|数据库 目前大多数开发人员长期从事企业开发的工作,免不了经常和数据库打交道,频繁的数据操作的代码就在项目中到处出现,为了去掉这些代码中"重复"的臭味,一些人写了数据库操作的类库,包括很多大企业也有自己的组件,但是实现方法可能各有不同吧.很早以前看过一遍孙亚民先生的文章也是设计模式的应用,很有启发自己也写了.net下的数据库操作类库,其实早就想把它出来共享了,现在很多数据库组件也很成熟了,又有SqlHelper这样权威的,所以也就不用拿我这个组件和它们的比较了,就算给大家扩

Winform下动态执行JavaScript脚本获取运行结果,谈谈网站的自动登录及资料获取操作

为了有效阻止恶意用户的攻击,一般登录都会采用验证码方式方式处理登录,类似QQ的很多产品的验证码处理,但在一些OA系统中,系统通过非对称加密方式来处理登录的密码信息,登录页面每次提供对密码进行加密的公钥是不同的,因此如果要模拟登录,就需要先获取公钥,然后根据公钥把输入的密码加密,然后通过POST提交给服务器进行验证登录.由于公钥是页面刷新变化的,而加密是通过Javascript脚本进行加密,如下面的登录页面源码所示.   <meta http-equiv="Content-Type"

impdp在同一个数据库中将一个用户下的对象复制到另一个用户下

比如要将ybht_hs用户下的对象复制到另一个用户ybht_ty下 那么在ybht_hs用户下创建一个public database link create public database link tolink connect to ybht_hs identified by "hs" using '(DESCRIPTION =     (ADDRESS_LIST =       (ADDRESS = (PROTOCOL = TCP)(HOST =10.138.129.4)(PORT