8645: A time out occurred while waiting for memory resources to execute the query(等待执行查询所需的内存资源时超时)
SQL Server含义
查询在资源信号量上等待执行所需的内存授予时超时。由于内存压力导致无法分配授予,操作被取消。
原因
并发的内存密集型查询(大型排序、哈希连接、哈希聚合)耗尽了整个查询内存池;新查询在信号量上排队并超时。过高的内存授予估算(统计信息过期、执行计划不佳)或服务器内存不足是根本原因。
解决方法
用 sys.dm_exec_query_memory_grants 和资源信号量相关 DMV 找出等待或持有内存的查询。更新统计信息,修正导致内存授予膨胀的执行计划(合适的索引、更准确的估算)。降低内存密集型查询的并发度;必要时用 Resource Governor 限制内存授予。检查服务器内存配置(max server memory)。
同一数据库的其他条目
- 4922ALTER TABLE ALTER COLUMN failed because one or more objects access this column(ALTER TABLE ALTER COLUMN 失败,因为有一个或多个对象访问此列)
- 7202Could not find server 'name' in sys.servers(在 sys.servers 中找不到服务器 'name')
- 40501The service is currently busy. Retry the request after 10 seconds(服务当前繁忙。请在 10 秒后重试请求)
- 8651Could not perform the operation because the requested memory grant was not available(无法执行操作,因为请求的内存授予不可用)
- 5061ALTER DATABASE failed because a lock could not be placed on database(ALTER DATABASE 失败,因为无法在数据库上加锁)
- 3702Cannot drop database because it is currently in use(无法删除数据库,因为它当前正在使用)
- 15138The database principal owns a schema in the database, and cannot be dropped(数据库主体在数据库中拥有架构,无法删除)