非常によく似たエラーで、過去2日間に3つの別々のプロセスが失敗しました:
_Time-out occurred while waiting for buffer latch type 4 for page (1:1189832),
database ID 2.
Time-out occurred while waiting for buffer latch type 4 for page (1:1189827),
database ID 2.
Time-out occurred while waiting for buffer latch type 4 for page (1:1189827),
database ID 2.
_
2つはまったく同じで、もう1つはわずかに異なるページ番号にアクセスしています。データベース#2はtempdbです。私はDBCC PAGE(tempdb, 1, 1189827, 1)
を実行しようとしましたが、出力は意味不明です。私はかなり迷っています。
誰かがこれらのタイムアウトの根本的な原因が何であるかを知っていますか? (私は他のフォーラムで何十もの提案を見てきましたが、その中にはメモリ破損があります)
どんな助けでも大歓迎です。 _DBCC PAGE
_の出力を読みたい場合は、質問してください。投稿します。
2005以降を実行している場合は、以下の2つのスクリプトを実行し、出力を元の質問に追加します。
SELECT
DB_NAME(fs.database_id) AS [Database Name]
, mf.physical_name
, io_stall_read_ms
, num_of_reads
, CAST(io_stall_read_ms / (1.0 + num_of_reads) AS NUMERIC(10, 1)) AS [avg_read_stall_ms]
, io_stall_write_ms
, num_of_writes
, CAST(io_stall_write_ms / (1.0 + num_of_writes) AS NUMERIC(10, 1)) AS [avg_write_stall_ms]
, io_stall_read_ms + io_stall_write_ms AS [io_stalls]
, num_of_reads + num_of_writes AS [total_io]
, CAST((io_stall_read_ms + io_stall_write_ms) / (1.0 + num_of_reads
+ num_of_writes) AS NUMERIC(10,
1)) AS [avg_io_stall_ms]
FROM
sys.dm_io_virtual_file_stats(NULL, NULL) AS fs
INNER JOIN sys.master_files AS mf
ON fs.database_id = mf.database_id
AND fs.[file_id] = mf.[file_id]
ORDER BY
avg_io_stall_ms DESC
OPTION
(RECOMPILE) ;
WITH Waits AS
(
SELECT
wait_type
, wait_time_ms / 1000. AS wait_time_s
, 100. * wait_time_ms / SUM(wait_time_ms) OVER () AS pct
, ROW_NUMBER() OVER (ORDER BY wait_time_ms DESC) AS rn
FROM
sys.dm_os_wait_stats
WHERE
wait_type NOT IN (
'CLR_SEMAPHORE',
'LAZYWRITER_SLEEP',
'RESOURCE_QUEUE',
'SLEEP_TASK',
'SLEEP_SYSTEMTASK',
'SQLTRACE_BUFFER_FLUSH',
'WAITFOR',
'LOGMGR_QUEUE',
'CHECKPOINT_QUEUE',
'REQUEST_FOR_DEADLOCK_SEARCH',
'XE_TIMER_EVENT',
'BROKER_TO_FLUSH',
'BROKER_TASK_STOP',
'CLR_MANUAL_EVENT',
'CLR_AUTO_EVENT',
'DISPATCHER_QUEUE_SEMAPHORE',
'FT_IFTS_SCHEDULER_IDLE_WAIT',
'XE_DISPATCHER_WAIT',
'XE_DISPATCHER_JOIN',
'SQLTRACE_INCREMENTAL_FLUSH_SLEEP')
)
SELECT
W1.wait_type
, CAST(W1.wait_time_s AS DECIMAL(12, 2)) AS wait_time_s
, CAST(W1.pct AS DECIMAL(12, 2)) AS pct
, CAST(SUM(W2.pct) AS DECIMAL(12, 2)) AS running_pct
FROM
Waits AS W1
INNER JOIN
Waits AS W2
ON W2.rn <= W1.rn
GROUP BY
W1.rn
, W1.wait_type
, W1.wait_time_s
, W1.pct
HAVING
SUM(W2.pct) - W1.pct < 99
OPTION (RECOMPILE) ;