dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/Hata Teşhis Kütüphanesi/sqlserver-823-824-torn-page-io-corruption-error
SQL Server
SQL Server 2017 - 2022Depolama & Bozulma
20 dk okuma
Msg 823 / 824, Severity: 24: I/O error 23 (Data error cyclic redundancy check) / torn page detected

SQL Server Donanım & Disk Bozulması: msdb.suspect_pages, DBCC CHECKDB ile Hata Tespiti ve Page Restore Runbook'u

Depolama bozulması ve CRC hatalarının yol açtığı 823/824 hataları, suspect_pages analizi, DBCC CHECKDB acil aksiyonları ve PAGE_VERIFY CHECKSUM kalıcı koruması.

İnceleyen:Kıdemli Veritabanı Mimarı & SRE (dataiotech Labs)
Test Edilen Sürümler: SQL Server 2017 / 2019 / 2022

Operasyonel Doğrulama & Güvenilirlik Standardı

Son Teknik İnceleme: 2 Kasım 2026
Test Edilen SürümlerSQL Server 2019 CU27, 2022 CU14
Gerekli Yetkisysadmin
Risk Seviyesi
CriticalDBCC CHECKDB REPAIR_ALLOW_DATA_LOSS çalıştırmak bozuk sayfaları silerek kalıcı veri kaybına yol açar; ilk tercih daima Page Restore olmalıdır
Beklenen ÇıktıDBCC CHECKDB çıktısında 0 allocation errors ve 0 consistency errors
Geri Dönüş (Rollback) Planı:En güncel full ve log yedeklerinden Page Restore veya Point-in-time restore
Microsoft Docs: MSSQLSERVER 823 & 824 Errors
İlk 60 Saniye Teşhis Protokolü:

Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.

▸Belirti

SQL Server sorgu okurken veya diske yazarken Severity 24 seviyesinde kritik bir hata üretir:

plaintext
Msg 823, Level 24, State 2, Line 1 I/O error 23(Data error (cyclic redundancy check).) detected during read at offset 0x000001a4000 in file 'D:\Data\Prod.mdf'. Msg 824, Level 24, State 2, Line 1 SQL Server detected a logical consistency-based I/O error: torn page (expected checksum: 0x8a1b2c3d; found 0x00000000).

▸Sahada Ne Görürsün?

Veritabanı sayfaları bozulmuştur (corruption). İlgili tabloyu okuyan sorgular düşer. msdb.dbo.suspect_pages tablosunda 823/824 hatalı sayfalar listelenir.


▸Kök Neden Matrisi

OlasılıkKök NedenAçıklama
%70Depolama / SAN Donanım HatasıDisk sürücüsü, SAN controller veya RAID pili bozulmuş, 8KB'lık veritabanı sayfası diske yarım yazılmıştır (torn page).
%20Disk Sürücüsü (Driver) & FirmwareHBA kartı veya depolama sürücüsü işletim sistemine başarı döndürmüş ancak veriyi fiziksel diske yazamamıştır.
%10PAGE_VERIFY Ayarının CHECKSUM OlmamasıEski veritabanlarında CHECKSUM doğrulaması açık değildir.

▸ACİL RUNBOOK (0-5dk)

sql
-- 1. Şüpheli ve bozuk sayfaları msdb'den listele SELECT database_id, file_id, page_id, event_type, error_count, last_update_date FROM msdb.dbo.suspect_pages; -- 2. Hangi tablonun etkilendiğini tespit et (örneğin File 1, Page 2450) DBCC PAGE ('Prod', 1, 2450, 0) WITH TABLERESULTS; -- 3. Veritabanında fiziksel bütünlük denetimi yap DBCC CHECKDB ('Prod') WITH NO_INFOMSGS, ALL_ERRORMSGS; -- 4. KURTARMA: En güncel yedekten Page Restore gerçekleştir -- RESTORE DATABASE Prod PAGE = '1:2450' FROM DISK = 'D:\Backups\Prod_Full.bak' WITH NORECOVERY; -- RESTORE LOG Prod FROM DISK = 'D:\Backups\Prod_Log.trn' WITH RECOVERY;
DİKKAT / TEHLİKE
Asla ilk adım olarak REPAIR_ALLOW_DATA_LOSS çalıştırmayın! Bu komut hatayı düzeltmez, bozuk verileri kalıcı olarak siler.

▸KALICI BLUEPRINT

  1. 1PAGE_VERIFY CHECKSUM Standardı: Tüm veritabanlarında CHECKSUM zorunlu kılınmalıdır:
sql
ALTER DATABASE Prod SET PAGE_VERIFY CHECKSUM WITH NO_WAIT;
  1. 1Haftalık DBCC CHECKDB: Haftalık bakım planı ile tüm veritabanları taranmalıdır.
  2. 2Yedek Doğrulaması: Yedekler alınırken WITH CHECKSUM parametresi kullanılmalıdır.

▸Doğrulama

sql
SELECT name, page_verify_option_desc FROM sys.databases WHERE name = 'Prod'; SELECT count(*) FROM msdb.dbo.suspect_pages WHERE event_type IN (1, 2, 3);

Diğer Veritabanı Hata Teşhisleri

Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.

Tüm Hatalar (82)