8645: A time out occurred while waiting for memory resources to execute the query(クエリ実行用のメモリリソース待機中にタイムアウト発生)
SQL Server意味
クエリの実行に必要なメモリ許可 (memory grant) を待ってリソースセマフォで待機中にタイムアウトした。メモリ逼迫により許可を割り当てられなかったため、操作は取り消された。
原因
同時実行されるメモリ集約型のクエリ (大規模なソート、ハッシュ結合、ハッシュ集約) がクエリメモリプール全体を消費し、新しいクエリがセマフォで待機してタイムアウトした。過大なメモリ許可の見積り (古い統計、不適切な実行計画) またはサーバーメモリの不足が根本原因。
対処方法
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(1 つ以上のオブジェクトがこの列にアクセスしているため 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(データベースプリンシパルがスキーマを所有しているため削除できない)