这可能听起来很疯狂,以前我向别人解释这个的时候也遇到过一些惊恐的表情,但现在的设置如下:
我们有一组台式机专门用于全天运行报告,使用当前驻留在文件服务器上的一堆 Access DB(超过 100 个)(因此服务器保存文件,但 PC 完成所有工作)。台式机使用调度程序激活 DB,DB 使用“autoexec”宏和 VBA 模块在其中运行报告/流程(有些有多个报告和流程,有些只有一个)。台式机每天大约需要 6 小时才能完成处理。
我正在尝试写的项目是将所有内容移动到单个服务器,希望能够节省时间并且释放桌面以供使用。
我正在尝试确定的是:我们可以考虑使用哪种类型的服务器,以便我们可以将数据库从 PC 移动到服务器,在服务器上安排运行时间,然后像平常一样运行它们(但速度更快)?您对“规格”有什么想法吗?我希望我可以更具体一些,但我做的是软件,而不是硬件,每次我问 IT 部门的任何人,他们都会回答“首先,停止使用 Access!”然后事情就开始走下坡路了……
答案1
是的,首先,停止使用 Access!(对于此任务)并且...您需要哪种服务器?:如果您计划将 Access DB 移动到服务器,则您只是将 CPU 时间从桌面移动到服务器。其他任何事情都不会改变。因此,准备一台具有许多 CPU 的服务器。
如果您将所有这些 Access 数据库合并到一个 SQL 服务器数据库中,也许您可以利用存储过程、视图等来平衡数据库和客户端程序之间的执行过程。
该客户端程序可以驻留在另一台服务器上并执行 SQL 数据库无法执行的逻辑。SQL Server 具有可以帮助您的报告服务。
答案2
由于我们不知道您是如何获得这些 Access 数据库的,以及为什么需要这么多数据库,因此我无法评论使用 Access 完成这项工作是否明智。
我们假设您有充分的理由并且别无选择,尽管可能有很多事情可以做来改善您的情况。
在托管数据库文件的机器上进行数据处理。
与其通过慢速网络移动所有数据,不如在数据库所在的位置进行工作,这样速度会更快。在编写报告之前压缩数据库。这将减少数据库的大小和碎片。查看
/compact
命令行开关。您知道哪些查询最慢吗?测量每个查询并找出哪些查询耗时最多,然后对其进行优化!
一旦您知道哪些查询需要优化,请确保您的数据库索引对它们来说是最佳的!
与 SQL 查询和 VBA 代码相同:您确定无法进一步优化吗?
如果在数据处理过程中您的数据库不需要被其他人访问,请再次使用命令行以独占模式打开它们
/excl
。
这通常会使 Access 更快,因为它不必锁定太多东西。将所有数据移至 SQL Server、MySQL 或 PostgreSQL 进行数据处理。
您仍然可以将 Access 客户端前端链接到这些数据库。