Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 共享Access 2003数据库性能_Database_Ms Access_Shared_Ms Access 2003_Database Performance - Fatal编程技术网

Database 共享Access 2003数据库性能

Database 共享Access 2003数据库性能,database,ms-access,shared,ms-access-2003,database-performance,Database,Ms Access,Shared,Ms Access 2003,Database Performance,我必须创建一个Access 2003数据库,并在100个用户之间共享它,用户不会进行任何修改,只查看使用主机上的计划任务每天(和一次)生成的多个报告 在这种情况下,同时有100名用户会分解性能吗 关于此工作流程,您有什么建议 排除: 使用数据库服务器(sqlserver,…等)不符合主题 我已经考虑过将报告输出到静态html中,但现在我想首先评估整个数据库的共享(因为可能需要过滤功能) 我希望避免复制 如果您为每个用户提供自己的前端副本并链接到数据源,那么如果网络正常,您可能会有100个用户。

我必须创建一个Access 2003数据库,并在100个用户之间共享它,用户不会进行任何修改,只查看使用主机上的计划任务每天(和一次)生成的多个报告

在这种情况下,同时有100名用户会分解性能吗

关于此工作流程,您有什么建议

排除:

  • 使用数据库服务器(sqlserver,…等)不符合主题
  • 我已经考虑过将报告输出到静态html中,但现在我想首先评估整个数据库的共享(因为可能需要过滤功能)
  • 我希望避免复制

如果您为每个用户提供自己的前端副本并链接到数据源,那么如果网络正常,您可能会有100个用户。我有大约100个用户,大多数是access DB上的只读用户,但他们不是同时使用它

您可以使用优秀的autoFE更新程序自动化前端安装 www.autofeupdater.com/

您使用了“主机”一词。记住,Access不是真正的客户机-服务器引擎:它只提供对数据的访问;使用者将数据向下拉至其本地计算机,在那里,其本地访问运行时或本地访问开发版本对下载的数据执行查询。整个“货运列车”的数据可以通过电线传送到桌面

几年前,我们有一个客户希望在Access中使用的大型数据库(最终将其移动到Oracle)。一些查询将占用90%-100%的可用LAN带宽15-30秒,在此期间,对LAN上完全不同的数据库的其他写入操作将超时,并导致数据损坏

因此,您的场景主要关注的是可能严重降级对其他应用程序的影响。这将取决于数据库的大小和报告背后查询的性质

如果可以的话,我建议您对报表进行“扫描”,这样报表的每次运行都不会调用实例化其背后数据的查询


编辑:如果有必要,另一种选择是让web服务器与执行查询的Access“主机”在同一台机器上运行,并将最终结果报告作为HTML提供给消费者的浏览器。这将减少带宽消耗。局域网变成了“云”。

谢谢你的提示。我甚至不能使用任何第三方软件,因此autofe不在范围之内。在我发现autofe之前,我使用位于网络驱动器上的一个小型引导access数据库“滚动”了我自己的。当用户打开这个数据库时,它会检查他们的计算机上是否有真正的前端,如果没有,它会安装并启动它。如果他们这样做,它会检查它是否是最新的,如果版本号小于服务器上的版本号,则会更新它。所有这些使用的都是access数据库,没有第三方工具。不过,事实上,我不知道我现在是否真的需要它,因为我会做一个版本,然后部署它,就这样,但我会记住这一点。非常感谢你,蒂姆。实际上,我用host这个词来指的是共享数据库访问权限的中央计算机。我还决定,在每天收集新数据之后,立即将报表查询结果存储到表中,而不是实际创建报表。然后,当用户运行一个报告时,它将构建在这个表的顶部,因此唯一执行的查询将是过滤查询(基于用户输入);这个查询看起来非常简单:从T中选择*其中X=B和A=Z和(R介于10和1010100之间)以及SS>TT。。。你认为呢?如果你把查询结果插入到一个新表中,这样报表就基于你的数据的一个小的静态子集,那么你就用我建议的方式“扫描”它们。那很好。但是SQL语句的简单性并不重要;它是必须通过导线的字节数。带宽消耗将取决于报表后面的静态表的大小。我明白了,然后我将尝试找出网络负载是什么样子,并尝试进行设置。男人非常感谢你,非常好的分数!关于Access将大量数据拉入网络的说法如果不是完全错误的话,也是误导性的。除非您没有索引或写入了需要完整表扫描的错误SQL(例如,在没有as WHERE子句的表达式上排序),否则不会提取完整数据表。如果您的查询占用了90%的LAN带宽,那么它们的编写非常糟糕,或者您的数据库模式非常糟糕。对于服务器数据库,Jet/ACE有时会猜错,在这种情况下,您可以将选择逻辑移动到服务器端(视图或存储过程)。但是您描述的内容并不常见。100只读报告用户的访问权限永远不会有太大问题,除非您的SQL非常复杂或者您犯了设计错误。