最終的に完全に完了するまで、データベースのメンテナンス作業の所要時間が長くかかると報告されました。タスクは、特定のデータベースに対してCHECKDBを実行します。wait_type RESOURCE_SEMAPHOREのためにCHECKDBが完了しません。
select * from sys.dm_exec_requests where (status = 'suspended')
を実行すると、中断されたDBCC TABLE CHECK
コマンドが表示されます。そのsession_id
をとり、それをselect * from sys.dm_exec_query_memory_grants
の結果と比較すると、メモリの許可には1515704kb(1.515GB)のrequested_memory_kb
があることがわかります。 required_memory_kb
はわずか512kbです。私はresource_sempahore_id
0 1174200キロバイトのtarget_memory_kb
、6063000キロバイトのmax_target_memory_kb
、1174200キロバイトのtotal_memory_kb
、および1174200キロバイトのavailable_memory_kb
を持っていることがわかりselect * from sys.dm_exec_query_resource_semaphores
を実行した場合resource_semaphore_id
は0
です。
待ちタスクが1.5GBのメモリ許可を要求しているのでCHECKDBが失敗しているように見えますが、リソースセマフォは、使用可能なメモリプール全体が1.17GBだけなので、そのメモリを許可できません。 6033000kb(6GB)にmax_target_memory_kb
が表示されていますが、メモリ不足のためにタスクが待っていても、現在のターゲットを超えて成長することはありません。
私は決定しようとしている:
required_memory_kb
が唯一の512キロバイトであるとき、私CHECKDBタスクは、メモリ許可の1.5ギガバイトを要求するために引き起こしている何。要求された金額が必要な金額の2950倍になるのはなぜですか?- タスクは、SQL Serverがリソースセマフォの合計で使用可能なメモリより多くのメモリを要求するのはなぜですか? (1.5GB要求と1.15GB要求)
- SQLサーバーにRAMを追加するだけで解決できることはありますか?