vb.net 如何复制一个正在使用的文件

2025-10-25 19:42:39

1、用资源管理器重现问题

SQL Server数据库文件会被SQL Server进程独占锁定,在资源管理器中复制正在使用中的SQL Server数据库文件会出现异常。

vb.net 如何复制一个正在使用的文件

vb.net 如何复制一个正在使用的文件

2、新建一个VB.NET工程

在VS.NET中新建一个的WinForm工程,只有一个Form,Form上有两个按钮:Button1和Button2。

vb.net 如何复制一个正在使用的文件

3、用VB.NET中常规的文件复制方法重现问题

双击Button1添加如下代码,运行后会出现下图所示的异常。

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        FileCopy("D:\Test\demo.mdf","D:\Test\demo1.mdf")        

End Sub

vb.net 如何复制一个正在使用的文件

4、如何复制正在使用中的文件呢?

如果要复制正在使用中的文件,需要使用到VSS(卷影拷贝服务)技术,可以自行百度:VSS 卷影拷贝服务,了解这项技术的原理。

vb.net 如何复制一个正在使用的文件

5、在VB.NET中使用VSS技术

百度搜索下载AlphaVSSAlphaFS两个开源项目的相关文件,在VB.NET工程中添加如下引用引用。关键字如下:

AlphaVSS site:alphavss.alphaleonis.com

AlphaFS site:alphafs.alphaleonis.com

vb.net 如何复制一个正在使用的文件

vb.net 如何复制一个正在使用的文件

6、添加VSS文件复制代码

双击Button2添加如下代码,运行后就可以正常复制了。

    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

        Dim sourceFile,destFile  As String 

        sourceFile="D:\Test\demo.mdf"

        destFile="D:\Test\demo1.mdf"

        using vss as new VssBackup            

           vss.Setup(Path.GetPathRoot(sourceFile))

           File.Copy(vss.GetSnapshotPath(sourceFile), destFile)

        End Using

    End Sub

vb.net 如何复制一个正在使用的文件

7、下载测试工程代码

测试工程代码共享在如下位置,可以自行下来测试。

下载路径:http://pan.baidu.com/s/1o8Lv7U6

vb.net 如何复制一个正在使用的文件

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢