8645: A time out occurred while waiting for memory resources to execute the query
SQL ServerNe demek?
Bir sorgu, çalışmak için gereken memory grant'i almak üzere kaynak semaforunda (resource semaphore) beklerken zaman aşımına uğradı. Bellek baskısı nedeniyle sorguya bellek ayrılamadığından işlem iptal edildi.
Neden olur?
Eşzamanlı çalışan bellek yoğun sorgular (büyük sıralama, hash join, hash aggregate) tüm sorgu belleği havuzunu tüketti; yeni sorgular semaforda sıraya girdi ve süresi doldu. Aşırı büyük memory grant tahminleri (güncel olmayan istatistikler, kötü planlar) ya da yetersiz sunucu belleği kök nedendir.
Nasıl çözülür?
sys.dm_exec_query_memory_grants ve resource semaphore DMV'leriyle bellek bekleyen/tutan sorguları belirleyin. İstatistikleri güncelleyin ve aşırı büyük memory grant'e yol açan planları düzeltin (uygun index'ler, daha iyi tahminler). Bellek yoğun sorguların eşzamanlılığını azaltın; gerekirse Resource Governor ile memory grant'i sınırlayın. Sunucu bellek yapılandırmasını (max server memory) gözden geçirin.
Aynı motorda diğer kayıtlar
- 4922ALTER TABLE ALTER COLUMN failed because one or more objects access this column
- 7202Could not find server 'name' in sys.servers
- 40501The service is currently busy. Retry the request after 10 seconds
- 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
- 3702Cannot drop database because it is currently in use
- 15138The database principal owns a schema in the database, and cannot be dropped