SQL Server 2000'de, bozuk sayfaları tanımlamak istiyorsanız, TORN_PAGE_DETECTION veritabanı seçeneğinin TRUE olarak ayarlanması gerekir.
Ancak, SQL 2005 ve sonraki sürümlerde, eski TORN_PAGE_DETECTION ayarının yerini iki farklı sayfa doğrulama türü arasından seçim yapma olanağı veren TORN_PAGE_DETECTION ve CHECKSUM değiştirdi.
Şimdi soru hangisini ayarlamak için geliyor - TORN_PAGE_DETECTION veya CHECKSUM?
TORN_PAGE_DETECTION - bir sayfanın her 512 baytına bir sayfa yazar ve bir sayfanın diske başarıyla yazılmadığını tespit etmenizi sağlar. Yakalama, bu 512 baytta depolanan verilerin gerçekte doğru olup olmadığını size söylemeyecektir, çünkü birkaç bayt yanlış yazılmış olabilir.
CHECKSUM - üzerinde bir sağlama toplamı olduğu varsayılarak, bir sayfa yazıldığında ve bir sayfa okunduğunda sayfanın sağlama toplamını hesaplar.
SQL Server, sağlama toplamını sayfadaki bit desenine göre hesaplar, sayfa başlığında depolar ve ardından sayfayı yazmak için bir G / Ç yayınlar. SQL Server sayfayı okuduğunda, aynı mantığı kullanarak sağlama toplamını yeniden hesaplar ve ardından sayfa başlığında bulunan değerle karşılaştırır. Sağlama toplamı değeri eşleşirse, sayfanın yazma-okuma döngüsü sırasında bozulmadığı varsayılır.
Sağlama toplamı hesaplama maliyeti, her bir okuma ve yazma sayfasında gerçekleştiğinden, CPU ek yüküne eklenebilir ve muhtemelen iş yükünüzün verimini etkileyebilir. Akılda tutulması gereken başka bir şey, sağlama toplamının sayfadaki belirli bir bit deseni için benzersiz olmamasıdır. İki sayfa muhtemelen aynı sağlama toplamı değerine eşlenebilir. Bu nedenle, sayfa bozulmasının algılanamayacağı uzak bir olasılık var.
Referans: SQL2005'te sağlama toplamı
Sorularınızı özel olarak cevaplamak için:
Checksum'un SQL2005'te tanıtıldığını ve bir DB'nin önceki bir sürümden yükseltilmesinin veya geri yüklenmesinin önceki sayfa doğrulama yöntemini koruyacağına inanıyorum. yani örtük bir yükseltme yoktu.
Evet CHECKSUM SQL Server 2005'te tanıtıldı ve VARSAYILAN . 2000'den 2005'e yükselttiğinizde, CHECKSUM'u kullanmak için Sayfa Doğrulama veritabanı seçeneğini açıkça değiştirmeniz gerekir.
Sql 2005'te oluşturulmuş veritabanını sql 2005 çalıştıran başka bir sunucuya geri yüklerseniz, onu ayarlamanız gerekmez. Sayfa Doğrulama seçeneğini ayarladığınız şeye devam edecektir.
Yırtık Sayfa Algılama geldiğinde araştırma yapmayı başaramadım
Gönderen: http://support.microsoft.com/kb/230785
SQL Server'ın 7.0'dan önceki sürümleri
SQL Server'ın 7.0'dan önceki sürümleri, günlük paritesi veya yırtık bit algılama olanakları sağlamadı. Aslında, bu sürümler, günlük kayıtları 2 KB günlük sayfasını doldurana kadar aynı günlük sayfasını birden çok kez yazabilir. Bu, başarılı bir şekilde gerçekleştirilmiş işlemleri ortaya çıkarabilir. Bir hata sırasında günlük sayfası yeniden yazılıyorsa, taahhüt edilen işleme sahip bir sektör doğru şekilde yeniden yazılmayabilir.
Bu nedenle, TORN_PAGE_DETECTION SQL Server 7.0'dan beri var olmuştur. O zaman bile, varsayılan ayar etkinleştirilmemesiydi (aynı bağlantı) .
Not SQL Server 7.0'da bozuk sayfa algılama varsayılan olarak etkin değildir. Sisteminizde algılamanın nasıl etkinleştirileceğini öğrenmek için sp_dboption adresine bakın .
Bu nedenle, veritabanı 7.0 örneğine karşı geliştirilmiş ve daha sonra yükseltilmiş olsaydı, HİÇBİR'in mevcut PAGE VERIFY seçeneğiyle (cevabında @ThomasStringer'ın belirttiği gibi) yükseltilmiş olurdu.
Edit: 09/24/2013 Cevabı geliştirmek için:
SQLSkills'den SQL Server Dahili notlarıma bakıldığında, bir sayfa dökümü kullanarak, yırtılmış bit algılamanın - TORN_PAGE_DETECTION veya CHECKSUM'un etkin olup olmadığını doğrulayabildiğini buldum:
use database_name -- change here for your database !!
checkpoint
go
dbcc traceon (3604) -- send output to screen
go
dbcc page (dbaalert, 1,1,0)
dbcc traceoff (3604) -- turn off the trace flag
go
m_tornBits : Bu, veritabanı için hangi sayfa korumasının türüne bağlı olduğuna bağlı olarak, sayfa sağlama toplamını veya yırtılmış sayfa koruma bitleri tarafından değiştirilen bitleri tutar.
Not : Çalışan herhangi bir eski sql sunucusu sürümüm yok. Aşağıda sql server 2000 ve üstü onaylanmıştır . Eğer etrafında 7,0 veya 6,5 varsa, bunu da onaylayabilirsiniz :-)
