首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >绕过MS Access 2GB文件大小限制

绕过MS Access 2GB文件大小限制
EN

Database Administration用户
提问于 2017-03-21 12:36:11
回答 3查看 65.2K关注 0票数 3

我正在创建一个具有多个表和特定关系的MS Access *.accdb数据库。

该数据库将用于一次将数据传输到另一系统,包含数百万项的订单。一个包含200万个虚拟条目的测试已经达到了1.8GB的文件大小。由于MS的内置限制为每个数据库文件2GB,所以我正在寻找绕过此限制的解决方案。

到目前为止,我提出了两个想法:

  1. 将数据库拆分为两个文件,在从file1到file2的转换过程中继续进行索引,处理相关表中条目的独立性。file1_table1 (指数1.1000) file2_table1 (指数1001.N)
  2. 使用一个主接口文件file1_table1 file2_table2 file3_table3主文件将表导出到不同的文件(链接表1.3和创建表关系)

我想得到一些关于概念,性能和可用性的这些想法的反馈,或者如果有任何其他的想法。

请注意,我想坚持MS Access,建立一个SQL数据库将是过度的,因为它将只用于一次传输。

这些数据分布在多个数据源(MS Access .accdb、Excel *.xlsx、分隔文件*.csv)上,并作为一个临时的一次性使用的more数据库进行分析、合并和准备,然后转换成一个基于SQL的工作数据库,其中包含的内容比我准备的多得多。这是一个经典的ETL过程。

"Compact“命令不会有帮助,因为它实际上只是大量的数据,而不是留下大量垃圾的大量操作。“拆分访问数据库”过程似乎只将查询/窗体/报告与包含表的后端文件分开,但我需要拆分表本身,这给我留下了拆分文件之间的一致性问题。这不是分离接口(前端)和数据后端的问题;由于数据量大,我需要拆分数据后端本身。

EN

回答 3

Database Administration用户

回答已采纳

发布于 2017-03-21 13:11:20

您不能绕过Access数据库的内置限制。但是,您可以通过使用内置特性来规避内置限制,例如将数据库对象拆分到多个*.accdb文件中并相应地引用它们。

Access 2016规格说明

Access 2016数据库(.accdb)的总大小,包括所有数据库对象和数据:2G,减去系统对象所需的空间。注意:您可以通过链接到其他Access数据库中的表来解决此大小限制。您可以链接到多个数据库文件中的表,每个数据库文件可以高达2GB。提示:有关缩小数据库大小的更多信息,请参见通过使用Compactand和修复帮助防止和纠正数据库文件问题.

您甚至可以更进一步,正如您已经提到的那样,拆分数据和接口。

拆分访问数据库

考虑在一个网络上分割多个人共享的任何数据库。分割共享数据库有助于提高其性能并减少数据库文件损坏的可能性。拆分数据库后,可以决定移动后端数据库,或者使用不同的后端数据库。可以使用链接表管理器更改所使用的后端数据库。

因为这是Microsoft Access,所以我建议坚持使用受支持的选项,而不是尝试另一种可能或不起作用的解决方案。

我们以前有一个应用程序,它将接口(FE)和数据(BE)分开。当托管在文件服务器上时,性能没有明显的差异。但是,当BE达到2 GB时,BE损坏了BE,数据无法恢复,这时我们决定切换到Server,然后切换到Server。当您访问包含不同表的多个be文件时,我认为不应该有明显的性能影响。但是,拥有BE on文件共享通常比在本地存储它们要慢。

票数 5
EN

Database Administration用户

发布于 2017-03-28 09:10:56

我非常赞成将后端迁移到Server。

表可以通过链接到服务器的表通过access附加。

这种方法的优点是您可以扩展以避免访问文件限制,但仍然使用您在access中所做的所有工作。

甚至还有从access导入和升级的巫师协助

性能将直接受sql文件、表和索引设计的影响。但粗略地说,如果不是比访问更好的话,它的表现也应该是一样的。基本提示:

  1. 创建一个具有良好文件大小的用户db,并将文件增长设置为100 db或1Gb。
  2. 确保每个表都有在sql server中定义的主键。不仅仅是一个独特的索引。Access不允许您在没有链接表定义中定义的主键的情况下更新sql表。
  3. 与访问自动编号等价的是标识列。如果有带有重复的暂存表,则值得将标识列作为pkey添加。

如果您没有访问sql实例的权限,您可以在您的pc上安装sql或developer。

如果您不熟悉sql server,那么就会有一些学习曲线,但这将是值得的。

SQL提供了一些功能强大的工具,为您打开了许多选项。学习SSIS对这个项目来说可能太多了,但是您可以在SSMS中使用导入向导并保存要重用的包。

票数 1
EN

Database Administration用户

发布于 2017-03-21 13:26:35

如果这是一次性传输,为什么要使用Access?将数据放入分隔的文件(逗号/制表符/管道)中,并对其进行处理。大多数系统都将从该格式导入。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/167731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档