W SQL Server 2000, jeśli chcesz zidentyfikować uszkodzone strony, to dla opcji bazy danych TORN_PAGE_DETECTION należy ustawić wartość PRAWDA.
Ale w SQL 2005 i nowszych nowe ustawienie PAGE_VERIFY zastąpiło stary TORN_PAGE_DETECTION, który pozwala wybierać spośród dwóch różnych rodzajów weryfikacji strony: TORN_PAGE_DETECTION i CHECKSUM.
Teraz pojawia się pytanie, które ustawić - TORN_PAGE_DETECTION lub CHECKSUM?
TORN_PAGE_DETECTION - zapisuje trochę na każde 512 bajtów na stronie, umożliwiając wykrycie, kiedy strona nie została pomyślnie zapisana na dysk. Chodzi o to, że nie powie ci, czy dane przechowywane w tych 512 bajtach są rzeczywiście poprawne, czy nie, z powodu faktu, że kilka bajtów mogło być zapisanych niepoprawnie.
SUMA KONTROLNA - obliczy sumę kontrolną strony zarówno podczas pisania strony, jak i podczas czytania strony, przy założeniu, że ma na niej sumę kontrolną.
SQL Server oblicza sumę kontrolną na podstawie wzorca bitowego na stronie, przechowuje ją w nagłówku strony, a następnie wydaje polecenie We / Wy w celu zapisania strony. Gdy SQL Server odczytuje stronę, ponownie oblicza sumę kontrolną przy użyciu tej samej logiki, a następnie porównuje ją z wartością dostępną w nagłówku strony. Jeśli wartość sumy kontrolnej się zgadza, to zakłada się, że strona nie uległa uszkodzeniu podczas cyklu zapisu i odczytu.
Ponieważ koszt obliczenia sumy kontrolnej jest ponoszony na każdej stronie do odczytu i zapisu, może to zwiększyć obciążenie procesora i może mieć wpływ na przepustowość obciążenia. Należy także pamiętać, że suma kontrolna nie jest unikalna dla określonego wzorca bitowego na stronie. Dwie strony mogą być przyporządkowane do tej samej wartości sumy kontrolnej. Istnieje więc możliwość, że uszkodzenie strony może pozostać niewykryte.
Odniesienie: Suma kontrolna w SQL2005
Aby dokładnie odpowiedzieć na twoje pytania:
Wierzę, że suma kontrolna została wprowadzona w SQL2005 i że uaktualnienie lub przywrócenie bazy danych z poprzedniej wersji zachowałoby jej metodę weryfikacji poprzedniej strony. tzn. nie było niejawnej aktualizacji.
Tak, CHECKSUM zostało wprowadzone w SQL Server 2005 i jest DOMYŚLNE . Podczas aktualizacji z 2000 do 2005 musisz jawnie zmienić opcję bazy danych Page Verify, aby użyć CHECKSUM.
Jeśli przywrócisz bazę danych już utworzoną w SQL 2005 na innym serwerze z SQL 2005, nie musisz go ustawiać. Zachowa się na tym, co ustawiłeś opcję Weryfikuj stronę.
Nie udało mi się zbadać, kiedy pojawiło się Wykrywanie stron
Od: http://support.microsoft.com/kb/230785
Wersje SQL Server wcześniejsze niż 7.0
Wersje programu SQL Server starsze niż 7.0 nie zapewniały funkcji wykrywania parzystości dziennika ani wykrywania rozdartego bitu. W rzeczywistości te wersje mogą zapisywać tę samą stronę dziennika wiele razy, dopóki rekordy dziennika nie wypełnią strony dziennika o wielkości 2 KB. Może to ujawnić transakcje, które zostały pomyślnie zatwierdzone. Jeśli strona dziennika jest przepisywana podczas awarii, sektor z zatwierdzoną transakcją może nie zostać poprawnie przepisany.
Tak więc TORN_PAGE_DETECTION istnieje od SQL Server 7.0. Nawet wtedy domyślnie było to, że nie było włączone (ten sam link) .
Uwaga Wykrywanie rozdartych stron nie jest domyślnie włączone w SQL Server 7.0. Zobacz sp_dboption, aby dowiedzieć się, jak włączyć wykrywanie w systemie.
Dlatego, jeśli baza danych została opracowana dla instancji 7.0, a następnie zaktualizowana, zaktualizowałaby opcję z zachowaną opcją PAGE VERIFY NONE (jak zauważył @ThomasStringer w swojej odpowiedzi).
Edytuj: 24.09.2013 Aby poprawić odpowiedź:
Odnosząc się do moich wewnętrznych notatek SQL Server z SQLSkills, odkryłem, że za pomocą zrzutu strony możesz sprawdzić, czy wykrywanie rozdartych bitów - TORN_PAGE_DETECTION lub CHECKSUM zostało włączone, czy nie:
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 : przechowuje sumę kontrolną strony lub bity, które zostały zastąpione bitami ochrony rozdartych stron - w zależności od tego, jaką formą ochrony strony jest włączone dla bazy danych.
Uwaga : Nie mam uruchomionych żadnych starszych wersji serwera SQL. Poniżej potwierdzono z serwera SQL 2000 i nowszych . Jeśli masz uruchomioną wersję 7.0 lub 6.5, możesz to również potwierdzić :-)