Eski okuma veya yazma kayıp bildirilmeyen g/ç sorunlarını algılamak için SQL Server tanılamaları eklenmiştir

# Hata: 470086 (SQL Server 8.0)

Belirtiler

İşletim sistemi, sürücü veya donanım sorunları neden kayıp koşullar ya da eski okuma koşullar yazarsanız, veri bütünlüğü ile ilgili hata iletileri 823, 3448, hataları 605 gibi görebilirsiniz 3456. Aşağıdaki örneklere benzer hata iletileri alabilirsiniz:


2003-07-24 16:43:04.57 spid63 Getpage: bstat = 0x9, sstat = 0x800, önbellek
2003-07-24 16:43:04.57 spid63 pageno olduğu/olmalıdır: objid olduğu/olması gerekir:
2003-07-24 16:43:04.57 spid63 (1:7040966)/(1:7040966) 2093354622/2039782424

2003-07-24 16:43:04.57 spid63... Bu sayfayı bu nesne için ayrılan IAM gösterir.

2003-07-24 16:52:37.67 spid63 hata: 605, önem derecesi: 21, durum: 1
2003-07-24 16:52:37.67 spid63 girişimi 'pubs' nesne 'yazarlar' nesne 'başlık' için ait olduğu veritabanında mantıksal sayfa (1:7040966) getirmek...


2003-07-24 16:52:40.99 spid63 hata: 3448, önem derecesi: 21, durum: 1
2003-07-24 16:52:40.99 spid63 (63361:16876:181), günlük kaydı için hareket kodu (0:159696956) sayfasında (1:7040977), veritabanı 'pubs' (veritabanı kimliği 12) geri alamadı. Sayfa bilgileri: LSN = (63192:958360:10), türü = 2. Oturum bilgileri: OpCode = 2, bağlam 1...


2003-07-09 14:31:35.92 spid66 hata: 823, önem derecesi: 24, durum: 2
0x00000016774000 'h:\sql\MSSQL\data\tempdb.mdf' dosyasında uzaklığındaki okuma sırasında 2003-07-09 14:31:35.92 spid66 g/ç hatası algılandı (hatalı bir sayfa kimliği)...

2010-02-06 15:57:24.14 spid17s hatası: 3456, önem derecesi: 21, durum: 1.
2010-02-06 15:57:24.14 spid17s günlük kaydı (58997:5252:28) sayfasında (1:480946), veritabanı 'Veritabanım' (veritabanı kimliği 17) (0:109000187), işlem kimliği için Yinele değil. Sayfa: LSN = (58997:5234:17), türü = 3. GNLK: OpCode = 2, 5, içerik PrevPageLSN: (58997:5243:17). Bir veritabanını yedekten geri yükleyin veya veritabanını onarmak.

Daha fazla bilgi

Microsoft SQL Server 2000 Service Pack 4 ile başlayan genişletilmiş izleme yetenekleri kullanılmaya başlanan ve bu tanılama SQL Server 2005 ve sonraki sürümlerinde ürünün bir parçası olmuştur. Bu yetenekler, g/ç ilgili dış sorunları ve hata iletilerinde sorun gidermek için "Belirtiler" bölümünde açıklanan algılanmasına yardımcı olmak için tasarlanmıştır

Sonra "Belirtiler" bölümünde anlatılan hata iletilerinden birini alırsınız ve fiziksel sürücü hatası gibi bir olay açıklaması olamaz, SQL Server, işletim sistemi, sürücü ve donanım ile bilinen sorunları gözden geçirin. İki aşağıdaki koşullar hakkında bilgi sağlamak tanılama deneyin:

  • Yazma kayboldu: Yazma başarılı SQL Server haberdar olsa da başarılı çağrı WriteFile API, ancak işletim sisteminin, bir sürücü veya önbellek denetleyicisi doğru veri için fiziksel ortam temizleme değil.

  • Eski okuma: ReadFile API, ancak işletim sisteminin, bir sürücü veya önbellek denetleyicisi başarılı bir çağrı hatalı verileri eski bir sürümünü döndürür.

Örneğin, Microsoft burada WriteFile API çağrısı başarılı olarak döner, ancak aynı veri bloğunun hemen, başarılı bir okuma önbelleği okuma donanımda olasılıkla depolanan verileri de dahil olmak üzere eski veri döndürür senaryoları onaylamıştır. Bu sorun bazen, önbellek okuma sorunu nedeniyle oluşur. Diğer durumlarda, veri yazma aslında hiç fiziksel diske yazılır.

Bu tür sorunlar için ek tanılamalar etkinleştirmek için SQL Server izleme bayrağı 818 ekledi. İzleme bayrağı 818 bir başlangıç parametresi olarak belirtebilirsiniz-T818, veya SQL Server çalıştıran bir bilgisayar için aşağıdaki ifadeyi çalıştırabilirsiniz:

DBCC TRACEON(818, -1)


İzleme bayrağı 818 başarılı son 2.048 yazma sıralama ve workfile g/ç işlemleri dahil olmak üzere değil, SQL Server çalıştıran bilgisayar tarafından gerçekleştirilen işlemleri izlemek için kullanılan bir bellek içi halka arabelleğinde sağlar. Hata 605, 823 veya 3448 gibi hataları ortaya çıktığında gelen arabellek günlük sıra numarası (LSN) değeri son yazma listesine karşılaştırılır. Okuma işlemi sırasında alınan LSN yazma işlemi sırasında belirtilen bir değerden daha eski ise, yeni bir hata iletisi SQL Server hata günlüğüne kaydedilir. Çoğu SQL Server yazma işlemleri yavaş yazma veya denetim noktaları olarak ortaya çıkar. Geç Yazma zaman uyumsuz g/ç kullanan bir arka plan görevdir. Halka arabelleğinde hafif ihmal edilebilir sistem etkileyen performans böylece yapma uygulamasıdır.

Aşağıdaki ileti, SQL Server hata WriteFile API çağrısı ya da ReadFile API çağrısı alamadığını gösterir. LSN gözden geçirildi, ancak değeri doğru değil:


SQL Server bildirilmeyen bir OS/donanım düzeyi okunamıyor veya veritabanı 12 sayfa (1:75007) sorun algıladı.

LSN döndürdü (63361:16876:181), (63361:16876:500) LSN bekleniyor

Donanım satıcısına başvurun ve sorunu düzeltmek için önbelleğe alma mekanizmaları devre dışı bırakmayı düşünebilirsiniz


SQL Server 2005 ile başlayarak, hata iletisi olarak bildirilir:


SQL Server, mantıksal bir tutarlılık temel g/ç hatası algılandı: eski okunur. << Okuma/yazma >> << PAGEID >> << dosya adı >> dosyası içinde << FİZİKSEL MAHSUP >> uzaklığında << DBID >>, veritabanı kimliği sayfa oluştu. SQL Server hata günlüğü veya sistem olay günlüğüne ek iletiler, daha fazla ayrıntı sağlayabilir. Bu veritabanı bütünlüğünü nin önemli ölçüde azaltır ve hemen düzeltilmesi gereken bir önemli hata durumdur. Tam veritabanı tutarlılık denetimi (DBCC CHECKDB) tamamlayın. Bu hata birçok nedenden kaynaklanabilir; Daha fazla bilgi için SQL Server Books Online'dan bakın.


Bu noktada, eski bir sürümü sayfanın okuma önbelleği içerir veya verileri doğru fiziksel disk için yazılmadı. Her iki durumda da (yazma kayıp veya eski bir okuma), SQL Server işletim sistemi, sürücü veya donanım katmanları dış bir sorun raporları.

605 hata veya hata 823 olan bir hareketi geri almak için çalıştığınızda 3448 hata oluşursa, otomatik olarak SQL Server çalıştıran bilgisayar veritabanı kapanır ve açın ve veritabanını kurtarmayı dener. İlk sayfasının 605 hata ya da hata 823 hatalı bir sayfa olarak kabul edilir ve sayfa kimliği SQL Server çalıştıran bilgisayar tarafından tutulur. (Önce Yinele aşama) Kurtarma sırasında hatalı bir sayfa kimliği okunduğunda, birincil ilgili ayrıntılar hakkında sayfa üstbilgisi SQL Server hata günlüğüne kaydedilir. Bu eylem, kayıp yazma ve okuma eski senaryolar arasında ayrım yapmak için yardımcı olduğu için önemlidir.

Aşağıdaki iki ortak davranışlarını eski okuma senaryoları görebilirsiniz:
Bir okuma önbelleğe alma sorunu önceki paragrafta sözü edilen davranışlar gösteriyor ve bunların okuma önbelleği devre dışı bırakarak sık çözülebilir. Genellikle önceki paragrafta açıklanan eylemleri önbellek geçersiz kılma ve fiziksel ortamın doğru güncelleştirilmemiş Göster oluşan başarılı okuma zorla. Kayıp yazma davranışı geri okunan sayfa sonra önbelleğe alma mekanizmaları, hatta zorla temizleme veri eski sürümü hala olduğunda oluşur.

Bazı durumlarda, sorun belirli bir donanım önbelleğine olmayabilir. Bir filtre sürücüsü ile ilgili bir sorun olabilir. Bu gibi durumlarda yedekleme yardımcı programları ve virüsten koruma yazılımı da dahil olmak üzere, yazılım gözden geçirin ve sonra filtre sürücüsü ile ilgili sorunları olup olmadığını.

Microsoft Hata 605 veya hata 823 için ölçütlere uyan değil, ancak aynı eski okuma veya yazma kayıp etkinliği tarafından neden olduğu koşullar da Not. Bazı durumlarda, iki kez güncelleştirilmesi ile aynı LSN değeri için bir sayfa görüntülenir. Nesne kimliği ve Sayfa kimliği (doğru sayfa nesne için zaten ayrılmış) ve bir değişiklik sayfada yapılan ve diske boşaltıldı Bu davranış oluşabilir. Sonraki sayfa alma işlemi eski bir resim verir ve ardından ikinci değişiklik. Sayfanın iki kez aynı LSN değeri ile güncelleştirildi SQL Server işlem günlüğü gösterir. İşlem günlüğü dizisini geri yüklemeye çalıştığınızda bu eylem bir sorun haline veya yabancı anahtar hatalar veya eksik veri girişleri gibi veri tutarlılığı sorunları. Aşağıdaki hata iletisini, bu koşulun bir örnek gösterilmektedir:


Hata: 3456, önem derecesi: 21, durum: 1 değil Yinele günlük kaydı (276666:1664:19) (1:1787100) sayfasında işlem kimliği (0:825853240), veritabanı için 'yazarlar' (7). Sayfa: LSN = (276658:4501:9), türü = 1. GNLK: OpCode = 4, 2, içerik PrevPageLSN: (275565:3959:31)...


Bazı senaryolar daha ayrıntılı olarak aşağıdaki listede açıklanmıştır:

  • LSN SequenceAction1Checkpoint
    2Begin Transaction
    3Table created or truncated
    4Inserts (Pages allocated)
    5Newly allocated page written to disk by Lazy Writer
    6Select from table – Scans IAM chain, newly allocated page read back from disk (LRU | HASHED = 0x9 in getpage message), encounters Error 605 - Invalid Object ID
    7Rollback of transaction initiated

  • LSN SequenceAction1Checkpoint
    2Begin Transaction
    3Page Modification
    4Page written to disk by Lazy Writer
    5Page read in for another modification (stale image returned)
    6Page Modified for a second time but because of stale image does not see first modification
    7Rollback – Fails – Transaction Log shows two different log records with the same PREV LSN for the page

G/ç etkinlikleri, öncelikle ve tempdb veritabanı SQL Server 'sıralama' işleçleri gerçekleştirebilirsiniz. Bu g/ç işlemlerini arabellek işlemlerini benzer; Ancak, bunlar zaten okuma yeniden deneme mantığı benzer sorunları gidermek amacıyla kullanmak için tasarlanmıştır. Bu makalede açıklanan ek tanılama bu g/ç işlemleri için geçerli değildir.

Microsoft aşağıdaki sıralama için kök nedeni hataları genellikle eski okuma veya yazma kayıp okuma olduğunu Not:


2003-04-01 20:13:31.38 spid122 SQL Server onaylama işlemi: dosya: < p:\sql\ntdbms\storeng\drs\include\record.inl > Satır onaylama işlemi başarısız 1447 = = ' m_SizeRec > 0 & & m_SizeRec < MAXDATAROW ='.

2003-03-29 09:51:41.12 spid57 sıralama hatası (hatalı bir sayfa kimliği) okuyun. pageid (0x1:0x13e9) = DBID = 2, dosya = e:\program files\Microsoft SQL Server\mssql\data\tempdb.mdf. Yeniden deneniyor.

2003-03-29 09:51:41.13 spid57 hata: 823, önem derecesi: 24, durum: 7
2003-03-29 09:51:41.13 spid57 g/ç hatası (hatalı bir sayfa kimliği), 0x000000027d2000 dosyasında 'e:\program files\Microsoft SQL Server\mssql\data\tempdb.mdf' uzaklığındaki okuma sırasında algılanan...

* 00931097 Module(sqlservr+00531097) (utassert_fail + 000002E3)
* 005B1DA8 Module(sqlservr+001B1DA8) (RecBase::Resize+00000091)
* 00407EE7 Module(sqlservr+00007EE7) (RecBase::LocateColumn+00000012)
* 00852520 Module(sqlservr+00452520) (mergerow + 000000A4)
* 008522B3 Module(sqlservr+004522B3) (merge_getnext+00000285)
* 0085207D Module(sqlservr+0045207D) (mergenext+0000000D)
* 004FC5FB Module(sqlservr+000FC5FB) (getsorted+00000021)

Önbelleğe alma bir yerel sürücü tempdb veritabanını taşıma ya da okuma önbelleğe alma mekanizmaları devre dışı bırakma Bu sıralama hatası karşılaşmış müşteriler sık sorunlar giderilmiştir.

Eski bir okuma veya yazma kayıp değil beklenen veri depolama çalışmasından dolayı çok çeşitli davranışlar ortaya çıkabilir. Eksik veri olarak görünebilir, ancak bazı veriler eksik daha yaygın etkilerini 644 hata veya hata 625 gibi dizin bozulmaları olarak görünür:


644 hata önem düzeyi 21 ileti metni dizin girdisini bulamadı RID için ' %. * hs dizin sayfası % S_PGID, dizin kimliği %d, veritabanı ' %. * ls'.

SlotID (%d) geçerli olmadığından 625 hata önem düzeyi 21 ileti metnini sayfa % S_PGID tarafından RID satır alınamıyor.


Bazı müşteriler, bunlar satır sayısı etkinlikler gerçekleştirdikten sonra satır eksik bildirmiştir. Kayıp bir yazma nedeniyle bu sorun oluşur. Belki de sayfayı kümelenmiş dizin sayfa zincirine bağlı gerekiyordu. Yazma fiziksel olarak kaybedildi, veri de kaybolur.

Önemli Karşılaştığınız herhangi bir davranış ya da şüpheli önbelleğe alma mekanizmaları devre dışı bırakılması ile birlikte benzer sorunlar varsa, Microsoft, önerir SQL Server ve en son SQL Server g/ç stres Simulator için en son güncelleştirmeyi edinin. Microsoft katı incelenmesi, işletim sisteminizin ve onun ilişkili yapılandırmaları gerçekleştirmeniz de kesinlikle önerir.

Not: Microsoft, nadir ve ağır g/ç yükü altında eski bir okuma bazı donanım platformları dönebilirsiniz onaylamıştır. Genişletilmiş Tanılama olası eski gösteriyorsa okuma ve kayıp durumu yazın, Yukarı hemen izlemek için donanım satıcınıza başvurun ve SQLIOSim yardımcı programını kullanarak sınayın.

SQL Server altında SQL Server g/ç güvenilirlik Program gereksinimleriözetlendiği gibi garantili teslim için kararlı bir ortam sistemleri gerektirir. SQL Server veritabanı altyapısı için giriş ve çıkış gereksinimleri hakkında daha fazla bilgi için bkz: Microsoft SQL Server veritabanı altyapısı giriş/çıkış gereksinimleri.

Bu sorun hakkında bazı ek bilgiler aşağıdadır:

  • ReadFile ve WriteFile API örnek olarak kullandım. Bu davranış, dağılım ve faaliyet toplamak için de geçerlidir.

  • Biz bu sorunların birçoğunu son zamanlarda gördünüz (Temmuz 2003) Compaq/HP tabanlı sistemlerde, akıllı SCSI ve HP SANsin ayrıca Intel RAID denetleyicileri dayalı.

  • Biz bu sorunu daha fazla SQL Server 2000 Service Pack 3 (760) gördünüz ve daha sonra oluşturur, ancak benzer senaryolarda SQL Server 2000 SP3 önce gördünüz.

  • SQLIOStress bakarak bu koşullar için en fazla agresif olacak şekilde güncelleştirildi.

  • SQL Server Geliştirme ekibi, bu sorunları algılama kolaylaştırmak için diğer yardımcı programlar güncelleştiriyor.

Yazar:
Yazan: haribaskar.janarthanam@wipro.com
Teknik İnceleme: bobward; mikezw; ericchr Srikant.Jahangirdar@wipro.com (KSM kimliği: Partners\v-9srikantj)
Düzenleyen: v-sedmun; vernettp

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Geri bildiriminiz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×