我正在创建一个具有多个表和特定关系的MS Access *.accdb
数据库。
该数据库将用于一次将数据传输到另一系统,包含数百万项的订单。一个包含200万个虚拟条目的测试已经达到了1.8GB的文件大小。由于MS的内置限制为每个数据库文件2GB,所以我正在寻找绕过此限制的解决方案。
到目前为止,我提出了两个想法:
我想得到一些关于概念,性能和可用性的这些想法的反馈,或者如果有任何其他的想法。
请注意,我想坚持MS Access,建立一个SQL数据库将是过度的,因为它将只用于一次传输。
这些数据分布在多个数据源(MS Access .accdb、Excel *.xlsx
、分隔文件*.csv
)上,并作为一个临时的一次性使用的more数据库进行分析、合并和准备,然后转换成一个基于SQL的工作数据库,其中包含的内容比我准备的多得多。这是一个经典的ETL过程。
"Compact“命令不会有帮助,因为它实际上只是大量的数据,而不是留下大量垃圾的大量操作。“拆分访问数据库”过程似乎只将查询/窗体/报告与包含表的后端文件分开,但我需要拆分表本身,这给我留下了拆分文件之间的一致性问题。这不是分离接口(前端)和数据后端的问题;由于数据量大,我需要拆分数据后端本身。
发布于 2017-03-21 13:11:20
您不能绕过Access数据库的内置限制。但是,您可以通过使用内置特性来规避内置限制,例如将数据库对象拆分到多个*.accdb
文件中并相应地引用它们。
Access 2016数据库(.accdb)的总大小,包括所有数据库对象和数据:2G,减去系统对象所需的空间。注意:您可以通过链接到其他Access数据库中的表来解决此大小限制。您可以链接到多个数据库文件中的表,每个数据库文件可以高达2GB。提示:有关缩小数据库大小的更多信息,请参见通过使用Compactand和修复帮助防止和纠正数据库文件问题.
您甚至可以更进一步,正如您已经提到的那样,拆分数据和接口。
考虑在一个网络上分割多个人共享的任何数据库。分割共享数据库有助于提高其性能并减少数据库文件损坏的可能性。拆分数据库后,可以决定移动后端数据库,或者使用不同的后端数据库。可以使用链接表管理器更改所使用的后端数据库。
因为这是Microsoft Access,所以我建议坚持使用受支持的选项,而不是尝试另一种可能或不起作用的解决方案。
我们以前有一个应用程序,它将接口(FE)和数据(BE)分开。当托管在文件服务器上时,性能没有明显的差异。但是,当BE达到2 GB时,BE损坏了BE,数据无法恢复,这时我们决定切换到Server,然后切换到Server。当您访问包含不同表的多个be文件时,我认为不应该有明显的性能影响。但是,拥有BE on文件共享通常比在本地存储它们要慢。
发布于 2017-03-28 09:10:56
我非常赞成将后端迁移到Server。
表可以通过链接到服务器的表通过access附加。
这种方法的优点是您可以扩展以避免访问文件限制,但仍然使用您在access中所做的所有工作。
甚至还有从access导入和升级的巫师协助。
性能将直接受sql文件、表和索引设计的影响。但粗略地说,如果不是比访问更好的话,它的表现也应该是一样的。基本提示:
如果您没有访问sql实例的权限,您可以在您的pc上安装sql或developer。
如果您不熟悉sql server,那么就会有一些学习曲线,但这将是值得的。
SQL提供了一些功能强大的工具,为您打开了许多选项。学习SSIS对这个项目来说可能太多了,但是您可以在SSMS中使用导入向导并保存要重用的包。
发布于 2017-03-21 13:26:35
如果这是一次性传输,为什么要使用Access?将数据放入分隔的文件(逗号/制表符/管道)中,并对其进行处理。大多数系统都将从该格式导入。
https://dba.stackexchange.com/questions/167731
复制相似问题