0

我使用Linq to Sql编写了相当长的 C# 程序,并且我的数据存储在位于我的程序EXE附近的MDF文件中。我的程序的一部分有一个用于备份数据库文件的表单,只需将MDFLDF文件复制到用户指定的文件夹中即可。

但是,如果我查询数据库然后尝试用备份替换原始文件,我将按预期在另一个进程异常中打开文件!问题是我不知道如何关闭SqlServer实例中的MDF文件。

我对Linq to Sql还是很陌生,我让 Visual Studio 的向导来处理大部分工作!所以如果我想做的任何事情听起来很愚蠢,我提前道歉!:D

非常感谢为我的案例提供更好的编程方法的任何帮助或建议。

4

2 回答 2

1

这可能无法满足您的需求,但您可能需要考虑将您的应用程序切换为使用 Sql Server Compact Edition ("SqlCE") 而不是 Sql Server(正确)。听起来您将数据库本质上用作应用程序的支持文件,这并不是 Sql Server 的真正预期目的。SqlCE 是专门为这类事情设计的,在桌面上运行得很好。您可以轻松地关闭与 SqlCE 的连接并像处理任何其他文件一样操作 SDF 文件(您尝试对 Sql Server MDF 文件执行的操作未成功)。

更新: 这看起来像你需要的:

USE master 
GO 
ALTER DATABASE YourDatabaseName 
SET OFFLINE WITH ROLLBACK IMMEDIATE 
GO 

(来自这个答案

于 2010-10-29T20:43:25.707 回答
0

在复制文件之前,您需要停止 SQL 服务器或使数据库脱机。

于 2010-10-29T20:38:35.480 回答