MetaGuru Asked: 2009-08-18 07:58:17 +0800 CST2009-08-18 07:58:17 +0800 CST 2009-08-18 07:58:17 +0800 CST 无法在 SQL Server 上运行查询,内存不足? 772 如何释放 SQL Server 上的一些 RAM(显示 77MB 可用)。当我尝试运行查询时,我收到一条错误消息,提示无法从 RAM 中启动线程。它正在使用除 77MB 之外的所有内容,例如 5000+ MB。 sql-server 2 个回答 Voted Best Answer Chirag 2009-09-04T03:16:37+08:002009-09-04T03:16:37+08:00 您是否设置了“最大服务器内存”选项。SQL 可能会占用所有可用内存,从而导致您解释的情况发生。 您可以检查并设置如下。它不需要系统重新启动或 sql 服务重新启动。 --检查最大内存设置 sp_configure '显示高级选项', 1 去 重新配置 去 sp_configure '最大服务器内存 (MB)' 去 如果 run_value 为 2147483647 或大于服务器上的实际 RAM,请根据服务器上的实际 RAM 进行设置,为操作系统留出一些。 sp_configure '最大服务器内存 (MB)', 4096 --4GB 去 重新配置 去 此外,如果 AWE 是 32 位 SQL Server Enterprise,您可能希望查看设置 Mark 2009-08-20T09:17:45+08:002009-08-20T09:17:45+08:00 如果您有大量来自 Web 服务器池的并发用户,您可能能够降低池线程数并为自己释放足够的资源,而不会中断系统。 或者,您总是可以在短时间内停止并非绝对必要的服务,同时尝试释放一点。 我在这里假设您只想腾出足够的空间来连接查询窗口,然后找出正在消耗资源的其他情况。如果这个问题经常发生,那么我建议您在当天早些时候打开一个查询窗口并每隔几分钟运行一次 sp_who2 以保持连接处于活动状态,直到服务器填满并且无法创建新线程。 我还建议您启动 perfmon 并开始监控 SQL Server 内存、连接和数据库级别的统计信息,并开始寻找对您造成伤害的行为不端的应用程序。如果这种情况经常发生,那么你要么有一些糟糕的代码,要么是地方性的糟糕编程,要么真的需要升级。
您是否设置了“最大服务器内存”选项。SQL 可能会占用所有可用内存,从而导致您解释的情况发生。
您可以检查并设置如下。它不需要系统重新启动或 sql 服务重新启动。
--检查最大内存设置
sp_configure '显示高级选项', 1
去
重新配置
去
sp_configure '最大服务器内存 (MB)'
去
如果 run_value 为 2147483647 或大于服务器上的实际 RAM,请根据服务器上的实际 RAM 进行设置,为操作系统留出一些。
sp_configure '最大服务器内存 (MB)', 4096 --4GB
去
重新配置
去
此外,如果 AWE 是 32 位 SQL Server Enterprise,您可能希望查看设置
如果您有大量来自 Web 服务器池的并发用户,您可能能够降低池线程数并为自己释放足够的资源,而不会中断系统。
或者,您总是可以在短时间内停止并非绝对必要的服务,同时尝试释放一点。
我在这里假设您只想腾出足够的空间来连接查询窗口,然后找出正在消耗资源的其他情况。如果这个问题经常发生,那么我建议您在当天早些时候打开一个查询窗口并每隔几分钟运行一次 sp_who2 以保持连接处于活动状态,直到服务器填满并且无法创建新线程。
我还建议您启动 perfmon 并开始监控 SQL Server 内存、连接和数据库级别的统计信息,并开始寻找对您造成伤害的行为不端的应用程序。如果这种情况经常发生,那么你要么有一些糟糕的代码,要么是地方性的糟糕编程,要么真的需要升级。