Ms access 频繁压缩和维修Access DB是否安全?

Ms access 频繁压缩和维修Access DB是否安全?,ms-access,vba,Ms Access,Vba,我有一个Access数据库,我使用传递查询填充该数据库。 我从SQL数据库中获取特定数据,并将其转储到Access中。 此Access DB每周更新一次,但我不能简单地附加上一周的新数据,因为过去的所有其他周也会更新。 我所做的是截断访问数据库,然后再次加载所有内容。 当我这样做时,我需要压缩和修复数据库,这样大小就不会膨胀 我的问题是,这样做可以吗?目前我正在使用本文中发布的逻辑。 我还没有遇到任何问题,但我只是想确定一下,让我们的访问大师考虑一下。此外,我还计划在我们的服务器上按计划运行以完

我有一个Access数据库,我使用传递查询填充该数据库。
我从SQL数据库中获取特定数据,并将其转储到Access中。
此Access DB每周更新一次,但我不能简单地附加上一周的新数据,因为过去的所有其他周也会更新。

我所做的是截断访问数据库,然后再次加载所有内容。
当我这样做时,我需要压缩和修复数据库,这样大小就不会膨胀

我的问题是,这样做可以吗?目前我正在使用本文中发布的逻辑。
我还没有遇到任何问题,但我只是想确定一下,让我们的访问大师考虑一下。此外,我还计划在我们的服务器上按计划运行以完成此任务。
只需要确保它不会轻易损坏(首先损坏文件的可能性有多大?)

如果你会问,我为什么要这么做?数据用户无法访问SQL server。
因此,我必须为他们提取数据,以便他们只需连接到access DB即可

以防您需要代码:

Dim sqlDelete As String
Dim sqlAppend As String

sqlDelete = "DELETE * FROM dbo_Table;"

sqlAppend = "INSERT INTO dbo_Table (Col1,Col2) SELECT Col1,Col2 FROM passThrough;"

With DoCmd
    .SetWarnings False
    .RunSQL sqlDelete

    .RunSQL sqlAppend
    .SetWarnings True
End With

Application.SetOption "Auto Compact", True

如果需要截断数据并再次加载,我建议将所有表(应该被截断)和所有临时表移动到单独的数据库中。 分离后,当应用程序启动时,可以用空数据库文件替换此数据库中不必要的数据。只需保存一个空数据库的副本,并使用旧数据将此文件复制到现有数据库上。这应该在打开任何基于临时数据库表的表单/记录集之前完成。它每次都比C&R工作得更快,而且更可靠,因为有时C&R可能会损坏文件


模板数据库文件也可以存储在Memo字段的主数据库中

如果您需要截断数据并再次加载,我建议将所有应截断的表和所有临时表移动到单独的数据库中。 分离后,当应用程序启动时,可以用空数据库文件替换此数据库中不必要的数据。只需保存一个空数据库的副本,并使用旧数据将此文件复制到现有数据库上。这应该在打开任何基于临时数据库表的表单/记录集之前完成。它每次都比C&R工作得更快,而且更可靠,因为有时C&R可能会损坏文件


模板数据库文件也可以存储在Memo字段的主数据库中

我会参考此论坛帖子:

我会参考此论坛帖子:

我会有一个问题,定期做一些包含修复的事情,因为这确实有负面的含义(为什么你需要修复一些东西,除非它坏了)。为什么您的用户没有SQL Server的选择功能?@KenWhite
为什么您的用户没有SQL Server的选择功能?
我也问了同样的问题。然而,我认为这与网络流量和工作范围(按照公司的指示)有关。服务器也在半个地球上。我经常会遇到一个问题,就是做一些名称中包含修复的事情,因为这确实有负面的含义(为什么你需要修复一些东西,除非它坏了)。为什么您的用户没有SQL Server的选择功能?@KenWhite
为什么您的用户没有SQL Server的选择功能?
我也问了同样的问题。然而,我认为这与网络流量和工作范围(按照公司的指示)有关。服务器也在半个地球上。我想我明白你的意思了,但仍在半个地球上处理它。介意再详细解释一下你的答案吗?:)这就是我要做的。我编辑了一点答案,如果你需要更多的解释,请告诉我。哦!这是非常简单和整洁的。那我就试试吧。我已经实现了这个,而且效果很好。虽然你的回答并不能直接回答我的问题,但我会接受你的帖子,直到另一个答案出现。我想我已经明白你的意思了,但还是半途而废。介意再详细解释一下你的答案吗?:)这就是我要做的。我编辑了一点答案,如果你需要更多的解释,请告诉我。哦!这是非常简单和整洁的。那我就试试吧。我已经实现了这个,而且效果很好。虽然你的回答不能直接回答我的问题,但我会接受你的帖子,直到另一个答案出现。