所以 - 我们有一个内部公司数据库,通常的东西:管理客户、电话、销售交易和客户协议/计划。
它是一个 Access 2000 前端和一个 SQL Server 2000 Standard 后端。单台服务器、双 Xeon 3.2GHz、2GB RAM、Windows Server 2003,整天获得大约 40% 的 CPU 负载,分布在操作系统 (HT) 可见的 4 个内核上。
后端数据库设计不佳,已经有机增长超过 10 年,由不那么熟练的人员维护。它被严重规范化,一些明显的问题包括具有数万行没有主键或索引的表,这些表也大量用于系统中一些最常用部分的多表连接(例如呼叫管理器应用程序,每天在每个人的第二台显示器上运行 8 小时,每隔几秒钟运行一次低效的大查询)。
前端也好不到哪里去,它是典型的由数百个表单、嵌套保存的查询、VBA 代码中编写不当的嵌入式 SQL、数十个“怪癖”等组成的典型混乱,并且每当进行更改时,一些无关的东西似乎都会中断。我们已经确定了一个运行“足够好”的 MDB,现在有一个不变的政策,因为我们内部没有 Access 重量级人物(也没有计划雇用一个)。
公司现在正在缓慢增长,增加客户、呼叫等数量,同时并发用户数量适度增加,最近性能明显变差(等待在表单之间移动,等待列表填充等) )
Perfmon 说:
SQL Server 的探查器每分钟看到数十万个查询。客户端上的 CPU 使用率几乎为零,表明它正在等待服务器端查询执行。我已经通过 DB Engine Tuning Advisor 处理了这个工作负载,并将其建议应用于测试备份,但这并没有产生太大的不同。
顺便说一下,我们有 100MB 和千兆以太网的混合,都在一个子网上,两层楼有 40 个用户。
对问题。
在我看来,我们有两种选择来解决/改善这种情况。
我们可以用比更换软件低一个数量级的成本来构建具有疯狂性能数字的 Intel i7 系统。
当最终开发出一个新系统时,它可以托管在这个盒子上,因此不会浪费硬件。一个新的 CRM 系统不断被推迟、关闭、关闭——我认为这种情况至少在一年内不会发生。
对这种情况的任何想法,特别是如果您亲自来过这里,将不胜感激。
谢谢
是否可以为 Access 数据库中的某些表生成包含 CREATE 和 INSERT 语句的 sql 脚本?
由于 Windows Server 2003 的支持将于 7 月 14 日结束,因此我们将所有计划任务转移到 Windows 2008 R2 服务器。
我们使用 Microsoft(MS) Access 2003(mdb) 数据库来处理各种后端进程,以补充用户和客户与我们系统的交互。
MS Access 内部的后端进程之一(导致此问题的原因)是在用户未登录时拒绝打印。
后端进程填充临时表,该表稍后用于填充要打印的报告。该报告具有嵌入的查询、链接的图像和保存的默认打印机。
执行计划任务的用户是域用户。
会话 0 隔离- Access 会出现一个非常小的打印窗口,显示您位于第 X 页,共 N 页。无法与该窗口交互。我觉得这可能是罪魁祸首,但我们已经尝试过的一切都无法阻止它。
我们保持域用户登录状态。
windows-server-2008 printing scheduled-task session microsoft-access
我有一台用于开发的 64 位 Windows 7 笔记本电脑。
我安装了 Office 2003,因为我有一个与 Office 2003 配合使用的客户端。
未安装Microsoft Access ,因为我坚信它是一个 ehm 非最佳软件。
我需要读取一个用 Access 编写的 .mdb 文件。
客户希望我将此文件中的几列读入不同的数据库。
我无法让 ODBC 连接到数据库。
如果我去设置->系统-> ODBC

并双击 MS-Access 出现错误:
找不到用于为 MS Access 驱动程序 (*.mdb) 设置 ODBC 的例程。重新安装驱动程序。
安装 32 位驱动程序没有帮助
我去了:http : //www.microsoft.com/download/en/details.aspx?id=13255
并下载了 32 位驱动程序并安装了那些,重新启动了计算机。
这没有帮助,问题仍然存在。
不允许安装 64 位驱动程序
运行 BDE-Administrator 不起作用,或者
BDE 对我很好,但是当我想保存设置时挂起。
如何访问该 *.mdb 文件?
我想使用 ODBC,但我愿意接受任何解决方法。
我想使用 Delphi XE2 或 Delphi-2007 进行连接。
免责声明:我是一名软件工程师,而不是 IT 专业人士,如果我的一些建议很愚蠢或荒谬,请见谅。
将始终保持运行状态的 Windows 应用程序连接到多个 MS Access 数据库并不断与之交互。应用程序可以随时读取或写入这些数据库中的任何一个。一些数据库很小,并且保持大致相同的大小。一些数据库(相对)很大(几十万行),并且不断地被追加。我们希望在不关闭应用程序的情况下每 X 分钟备份一次这组数据库。备份将位于本地主机(第二个硬盘驱动器)或 (100mbit) 本地网络上。
该应用程序将在 Windows XP 或 Windows 7 上运行。
我确实意识到真正的解决方案是“停止使用 MS Access”,这目前不是一个选项。
我们可以使用 windows copy(或 xcopy?)命令或一些(最好是免费的)第 3 方文件复制器来复制文件。这有什么问题吗?
此选项的缺点是每次都完全复制较大的数据库,这可能需要几秒钟的时间。如果在复制 MS Access 数据库的同时写入它,会发生什么情况?(数据损坏?无法复制?)
我们可以运行一些 3rd 方进程,使备份 MS Access 数据库与其实时对应数据库保持同步。我查看的许多现有程序都支持“真正的”数据库引擎,如 SQL Server、Postgres 等,但似乎 MS Access 在这里缺乏支持(或者我可能只是没有搜索正确的关键字)。
backup synchronization database-replication microsoft-access
在我们的办公室,我们在 HP ProLient ML350 G6 上托管了一台 Windows 2008 虚拟机。此 VM 可以访问主机上的所有可用资源。
在这台机器上有一些 Microsoft Access 数据库,它们用于在我们的 PC 上运行的编码不佳的 vb6 应用程序(当前为 25-30)。
我们的问题是,有时我们使用的查询(它们的编码也很差)速度很慢。
虚拟机能不能解决这个问题?我们如何调试它?
我正在考虑检查磁盘 I/O,但我不确定我应该确切检查什么,CPU 和内存使用率非常低。
当然,我们正在尝试编写更好的代码,但同时我们也在尝试查看我们的结构是否存在其他问题。
我们在文件共享上有一个 MS-Access DB。我们得到的性能和错误消息我们怀疑与文件访问速度太慢有关。要找出瓶颈是什么,首先要检查什么?
它在本地运行良好,所以我们很确定它不是应用程序本身。
使用基于 MDB 的应用程序的大型客户端已将 MDB 文件移至异地,以便我的应用程序通过 WAN 连接到它。
我怎样才能说服他们将 MDB 文件放回现场的 LAN 上,以便应用程序能够可靠地运行?
我能说所有的数据库都必须在局域网上吗,不管是什么类型的数据库?出于可靠性的考虑,我可以说 SQL Server、Oracle 等都运行在 LAN 而不是 WAN 上吗?
local-area-network database wide-area-network microsoft-access
32bit-64bit ×1
backup ×1
database ×1
hardware ×1
odbc ×1
printing ×1
session ×1
sql ×1
sql-server ×1
vb6 ×1