我正在尝试运行一个通过 ODBC 数据源连接到 Access 数据库的 asp.net 页面。我使用的是 Microsoft Access ODBC 驱动程序。一切都运行正常,直到最近的一次停电导致我们不得不重新启动服务器。问题是,每当我尝试打开连接(不运行查询或任何其他操作,只是打开连接)时,我都会收到相当神秘的错误消息:System resource exceeded.
服务器运行 Windows Server 2003(标准版,Service Pack 2)。它有 7.99 GB 的可用硬盘空间。它似乎有大约 600 MB 的可用 RAM。我显然想不出任何其他应用程序试图连接到此 DSN。
答案1
ODBC 数据源出现“系统资源超出”错误最可能的三个原因是:
内存分配失败-要解决此特定问题,您可以:
- 检查为 SQL/ODBC 数据库应用程序和虚拟内存设置的内存限制;虽然服务器本身可能有足够的可用 RAM,但 VM 或应用程序可能会达到上限。
- 如果服务器本身实际上使用了几乎所有可用内存,则可以向系统添加更多内存。
- 在 Windows Server 上启用/使用 AWE 内存(请参阅https://www.sqlservercentral.com/Forums/FindPost32620.aspx);标准 32 位地址最多可以映射 4 GB 内存,启用 AWE 可以将其扩展至 8GB 或更多。
磁盘空间(文件夹或文件大小限制)问题 - 补救措施包括:
- 检查服务器设置中临时文件的可用磁盘空间。
- 检查 Windows Server/NT 事件日志是否已满;如果已满,您可能需要修剪它并更新日志设置。
连接方法:您当前的设置可能正在创建新连接,而不是重复使用现有连接,从而导致连接数达到最大值。解决方法:
- 在所使用的驱动程序的 ODBC 管理器中打开“连接池”。请参阅https://support.microsoft.com/en-us/help/164221/info-how-to-enable-connection-pooling-in-an-odbc-application
与此相关,但仅在执行查询时 - MS Access 2010 处理循环遍历大型表的方式与 Access 2003 不同。请参阅https://social.msdn.microsoft.com/Forums/office/en-US/eda4991f-ac30-4e98-87ba-8d528ae7cfde/system-resources-exceeded-ms-access-2010?forum=accessdev。有适用于 Office 和 Windows Server 的补丁/服务包可以解决此知识库文章中提到的部分问题: https://support.microsoft.com/en-us/help/2726928/-system-resource-exceeded-error-message-when-you-perform-a-query-in-ac