MSSQLSERVER_9004

Şunlar için geçerlidir: SQL Server

Details

Attribute Value
Ürün Adı SQL Server
Olay Kimliği 9004
Olay Kaynağı MSSQLSERVER
Bileşen SQLEngine
Sembolik Ad LOG_CORRUPT
İleti Metni '%.*ls' veritabanı için günlük işlenirken bir hata oluştu. Mümkünse yedekten geri yükleyin. Yedekleme kullanılamıyorsa, günlüğü yeniden oluşturmak gerekebilir.

Explanation

Geri dönüş, kurtarma veya çoğaltma sırasında günlüğü işlerken bir hata karşılaşıldı. Bu, işletim sistemi tarafından tespit edilen bir hata veya SQL Server tarafından tespit edilen bir iç tutarlılık hatası anlamına gelebilir.
SQL Server Database Engine, işlem günlüğü içeriğinin tutarlılığını okuyup işlerken mantıksal kontroller yapar. Log başlığı, log blokları ve kayıtların tüm yönleri kontrol edilmiyor. Eyalet numarası, arıza türü hakkında daha fazla bilgi sağlar:

  • Eyalet 1 Sanal Günlük Dosyasının (VLF) günlük dosyası başlığı zarar görmüştü. Hizmet başlatıldığında veritabanını başlatırken hasarlı bir log dosyası başlığı bulunursa, ERRORLOG'da yalnızca 9004 hatası görebilirsiniz. Log Dosyası Başlığı, her VLF'nin işlem günlüğündeki ilk kısmıdır. Log dosyası başlığı, log dosyasının tek bir dosya başlığı veya ilk 8 KB ile aynı değildir. Log dosyasının dosya başlığı zarar görürse, veritabanı dosyası başlık sayfası bozulmasına benzer şekilde Msg 5172 alabilirsiniz.
  • 2. ve 3. Eyalet Bir işlem sırasında RESTORE kurtarma yapılırken bir log bloğu geçersiz sayılırdı.
  • 4-12. Eyalet Bunların hepsi, log kayıtları işlenirken günlük bloklar üzerinde çeşitli kontrollerdir. Bunlar arasında işlem günlüğünün tutarlılığına dair parite, sektör ve diğer mantıksal kontroller yer alır

Çoğu durumda, bu hata yalnızca ERRORLOG veya Windows Uygulama Olay Günlüğü'nde EventID = 9004 ile görülür çünkü günlüğü işleyen işlem doğrudan bir kullanıcı komutuna (örneğin, SQL Server Engine başladığında çalışan kurtarma gibi) dayanmaz. Bu durumlarda, 9004 hatası genellikle 3414 hatası ile birlikte görülür. Ancak, bazı ALTER DATABASE sorgular, örneğin günlüğün işlenmesini gerektirebilir ve bu nedenle bu hataları görecektir. Hata Severity=21 seviyesinde olduğundan, kullanıcı oturumu bağlantısı kesilir.

Cause

9004 hatası, işlem günlüğünün içeriğinin zarar gördüğünü gösteren genel bir hatadır. Günlüğün tutarsız hale gelmesinin nedenleri, SQL Server Engine tarafından tespit edilen herhangi bir veritabanı bozulma sorununa benzer. Günlük hasarının nedenini bulmak için, veritabanı bozulması için kullanılan benzer teknikleri takip etmelisiniz; olası donanım, dosya sistemi ve I/O sorunlarının analizini yapmalısınız. DBCC CHECKDB'nin işlem günlüğünü işlemlerinin bir parçası olarak kontrol etmediğini ve günlük bozulma hatalarını tespit edemediğini unutmayın. 9004 hatası SQL Server Engine'in kendisi tarafından ortaya çıkar.

Kullanıcı Eylemi

Bu hatayı düzeltecek aşağıdaki eylemlerden biri şunlardır:

  • Yedekten geri yükleme: Bu sorundan kurtulmak için bilinen iyi bir yedekten geri yükleme. Veritabanının log kısmı veya günlük yedeklemesi hasarlı içerik içeriyorsa, 'de RESTORE9004 hatasına rastlanabilirsiniz. Bu durumda, yedekteki işlem kaydı zarar görür.

  • Günlüğü yeniden oluşturun: Yedeklemeden geri getiremezseniz, işlem günlüğünü yeniden oluşturarak veritabanını çevrimiçi hale getirebilirsiniz. İşlem günlüğünü yeniden oluşturmanın sonuçlarını dikkatlice anlamalısınız. Bu, veritabanınızdaki işlem tutarlılığının olası kaybını da içerir. İşlem günlüğünün yeniden oluşturulması hakkında daha fazla bilgi için lütfen Veritabanı Acil Durum Modunda Hataların Çözümü bölümüne bakınız.

  • Sistem sorunları için Logları İnceleyin: Ayrıca, sistemdeki sorunu neden olabilecek sorunları tespit etmek için Sistem Olay Günlüğü ve Hata Kayıtlarını kontrol edin.