C# 在MSAccess 2007中进行备份的Sql查询?

C# 在MSAccess 2007中进行备份的Sql查询?,c#,.net,ms-access,C#,.net,Ms Access,MS Access数据库是否有sql查询直接从c#应用程序进行备份? 如果没有,那么如何从c#应用程序中执行 我正在开发一个以access为后端的C#net应用程序 现在我想要的是一个sql查询,这样当我执行它时,我应该在一个文件夹中得到一个备份文件 我曾在sql server中使用查询“备份数据库AdventureWorks到磁盘='C:\AdventureWorks.BAK'”;尝试过它 但我不知道如何在Ms Ms Access中执行? 请提供帮助。Microsoft Access是一个单文

MS Access数据库是否有sql查询直接从c#应用程序进行备份? 如果没有,那么如何从c#应用程序中执行

我正在开发一个以access为后端的C#net应用程序

现在我想要的是一个sql查询,这样当我执行它时,我应该在一个文件夹中得到一个备份文件

我曾在sql server中使用查询“备份数据库AdventureWorks到磁盘='C:\AdventureWorks.BAK'”;尝试过它 但我不知道如何在Ms Ms Access中执行?
请提供帮助。

Microsoft Access是一个单文件数据库系统。JET-SQL中没有任何内置函数来创建数据库本身的备份。正如其他人所说,您只需将数据库复制到另一个位置。如果数据库的大小很大(但是Access有2gb的限制),那么您可以在存储压缩文件之前对其进行压缩

我使用过这个库(我与作者没有任何关系)


忠告。请记住在执行备份之前关闭任何连接。MS Access没有像它的大表兄那样的防弹日志和恢复系统,如果任何线程在备份时写入数据库,结果可能是文件损坏

只需将MS Access文件复制到其他位置?habib说什么。既然你可以复制原始的.mdb backup.mdb并完成它,为什么还要费心用一些sql呢?当我们进行备份时,生成的文件大小将小于实际文件,而当你的文件非常大时,我想这种方法是不可行的。Microsoft Access是一个单文件数据库系统。JET-SQL中没有任何内置函数来创建数据库本身的备份。正如其他人所说,您只需将数据库复制到另一个位置。如果数据库的大小很大(但是Access有2gb的限制),那么您可以在存储压缩文件之前对其进行压缩。我使用过(我没有以任何方式与作者联系)感谢steve详细解释。你能告诉我如何在备份之前关闭所有连接吗?我在谷歌上搜索了一下,但没有找到访问权限。谢谢你的代码。在单用户情况下,这应该不是问题。如果您按照最佳做法打开/使用/关闭连接,那么您应该是安全的。否则,您将有一个全局OleDbConnection实例,您应该检查该实例是否处于关闭状态。在多用户场景中,这是一个棘手的问题,因为没有提供安全备份。我想到的唯一一件事是尝试以独占模式打开连接(
Mode=Share Exclusive
),如果成功,那么您的移动相对安全。(不过,我真的希望您不要在高并发情况下强制访问)
void Main()
{
    CopyToZip(@"D:\temp\temp.accdb", @"D:\temp\temp.zip");
}
private static void CopyToZip(string source, string dest)
{
     using (ZipFile zip = new ZipFile(dest))
     {
         ZipEntry e = zip.UpdateFile(source, string.Empty);
         e.Comment = "Database archived in date: " + DateTime.Today.ToShortDateString();
         zip.Save();
     }
}