Ada dua opsi berbeda dalam SQL Server modern untuk verifikasi halaman; menjadi Torn Page Detection dan Checksum . Tidak ada juga tentu saja pilihan.
Saya percaya Checksum diperkenalkan di SQL Server 2005 dan bahwa memutakhirkan atau mengembalikan DB dari versi sebelumnya akan mempertahankan metode verifikasi halaman sebelumnya. yaitu tidak ada peningkatan implisit.
Masalahnya adalah kita memiliki database produksi yang mulai diproduksi menggunakan SQL Server 2000 dan sejak itu pindah ke server SQL Server 2008 R2. Verifikasi Halaman diatur ke Tidak Ada ketika saya mengharapkan itu menjadi Deteksi Halaman Torn . Kembali ke jumlah waktu ini kita tampaknya berpikir bahwa DB pada awalnya dikembangkan dalam SQL Server 7.0 kemudian bermigrasi ke SQL Server 2000 dan ini dapat menjelaskan hasil yang diamati.
Saya bertanya-tanya kapan Torn Page Detection dan Checksum menjadi fitur dari SQL Server, dan bagaimana mereka berperilaku ketika dimigrasi atau ditingkatkan ke versi yang lebih baru.
Sunting: Ringkas beberapa jawaban:
Ada sedikit perbedaan pada beberapa tanggal ketika Torn Page Detection masuk ke SQL Server.
Tautan 1: http://support.microsoft.com/kb/230785
Tautan 2: http://technet.microsoft.com/en-us/library/aa337525(v=sql.90).aspx
Tautan pertama menunjukkan SQL 7.0 dan SQL2000 kedua. Saya cenderung menaruh kepercayaan saya pada saran SQL7.0 dan tautan dua bingung karena dinonaktifkan secara default di SQL7.0 dan aktif secara default di SQL2000.
sumber
Jawaban:
Di SQL Server 2000, jika Anda ingin mengidentifikasi halaman yang rusak, maka opsi database TORN_PAGE_DETECTION harus disetel ke TRUE.
Tetapi dalam SQL 2005 dan lebih baru, PAGE_VERIFY pengaturan baru menggantikan TORN_PAGE_DETECTION lama yang memungkinkan untuk memilih dari dua jenis verifikasi halaman yang berbeda: TORN_PAGE_DETECTION dan CHECKSUM.
Sekarang muncul pertanyaan yang mana yang harus diatur - TORN_PAGE_DETECTION atau CHECKSUM?
TORN_PAGE_DETECTION - menulis sedikit untuk setiap 512 byte di halaman yang memungkinkan Anda mendeteksi kapan halaman tidak berhasil ditulis ke disk. Tangkapannya adalah ia tidak akan memberi tahu Anda apakah data yang disimpan dalam 512 bye itu benar atau tidak karena fakta bahwa beberapa byte mungkin telah ditulis secara tidak benar.
CHECKSUM - akan mengkalibrasi sebuah checksum dari halaman baik ketika sebuah halaman ditulis maupun ketika sebuah halaman dibaca, dengan asumsi ia memiliki checksum di atasnya.
Referensi: Checksum dalam SQL2005
Untuk secara khusus menjawab pertanyaan Anda:
Ya CHECKSUM diperkenalkan di SQL Server 2005 dan merupakan DEFAULT . Ketika Anda meningkatkan dari 2000 ke 2005, Anda harus secara eksplisit mengubah opsi database Page Verify untuk menggunakan CHECKSUM.
Jika Anda mengembalikan database yang sudah dibuat pada sql 2005 ke server lain yang menjalankan sql 2005, Anda tidak perlu mengaturnya. Ini akan bertahan pada apa yang telah Anda atur opsi Verifikasi Halaman.
Dari: http://support.microsoft.com/kb/230785
Dengan demikian, TORN_PAGE_DETECTION telah ada sejak SQL Server 7.0. Bahkan kemudian, standarnya adalah tidak diaktifkan (tautan yang sama) .
Oleh karena itu, jika database dikembangkan terhadap instance 7.0 dan kemudian ditingkatkan, itu akan meningkatkannya dengan opsi PAGE VERIFY NONE yang masih ada (seperti yang dicatat oleh @ThomasStringer dalam jawabannya).
Sunting: 09/24/2013 Untuk meningkatkan jawabannya:
Mengacu pada catatan internal SQL Server SQL saya dari SQLSkills, saya menemukan bahwa menggunakan dump halaman, Anda dapat memverifikasi apakah deteksi bit robek - TORN_PAGE_DETECTION atau CHECKSUM diaktifkan atau tidak:
m_tornBits : Ini menampung checksum halaman atau bit yang dipindahkan oleh bit perlindungan halaman robek - tergantung pada apa bentuk perlindungan halaman dihidupkan untuk database.
Catatan : Saya tidak memiliki versi server sql lama yang berjalan. Di bawah ini dikonfirmasi dari sql server 2000 dan lebih tinggi . Jika Anda memiliki 7.0 atau 6.5 berlarian, Anda dapat mengkonfirmasinya juga :-)
sumber
Lihatlah referensi dari BOL :
Ini menentukan bahwa sebelum SQL Server 2005 opsi untuk
TORN_PAGE_DETECTION
ada, tetapi tidakCHECKSUM
.Dan untuk menjawab poin kedua Anda:
Ya itu benar. Anda perlu mengatur database secara eksplisit untuk menggunakan
CHECKSUM
metode verifikasi halaman.sumber
Ada tiga seperti yang Anda nyatakan: TORN_PAGE_DETECTION, CHECKSUM, dan NONE.
Seperti dikutip dari ini artikel MSDN berjudul "Buffer Management": deteksi halaman Robek diperkenalkan pada SQL Server 2000. Checksum diperkenalkan pada SQL Server 2005.
Sinopsis hal-hal lain yang dicatat dalam artikel ini adalah bahwa mekanisme verifikasi halaman ditentukan pada waktu pembuatan basis data. Jadi itu tergantung pada siapa dan bagaimana mereka membuat database untuk apa itu diatur, juga bisa dikontrol oleh model database yang dikonfigurasi. Juga menarik untuk dicatat adalah bahwa jika Anda mengubah pengaturan itu tidak mempengaruhi seluruh database, hanya ketika halaman ditulis ke berikutnya. Juga menurut Paul Randal itu hanya dilakukan ketika halaman dibaca ke dalam memori, diubah, dan kemudian ditulis kembali ke disk; info itu ada di sini .
Siapa pun yang memiliki izin ke instance database dapat mengubah nilai itu. Itu bisa bertahan melalui peningkatan seperti yang dinyatakan pada MSDN di sini :
Bisa juga dimodifikasi di lain waktu karena seseorang salah mengerti konfigurasi dan menembak dalam gelap untuk mencoba dan memecahkan masalah.
SQL Server 2000 seperti yang dinyatakan di atas.
Pengaturan sebelumnya dipertahankan selama peningkatan seperti yang disebutkan di atas.
Sekarang saya ingin menunjukkan fakta bahwa tautan lain yang disediakan oleh orang-orang menyatakan bahwa SQL Server 7.0 adalah ketika deteksi halaman sobek tersedia. Yang sebagaimana dinyatakan dalam artikel-artikel itu benar, namun terbukti berkali-kali bahwa dokumentasi Microsoft tidak boleh dianggap sebagai kebenaran dalam segala keadaan. Ada banyak kesalahan. Maka dengan itu dikatakan bagaimana Anda bisa menentukan jawaban mana yang bisa diterima? Kami semua menyediakan dokumentasi oleh Microsoft untuk mendukung jawaban kami.
Juga catat bahwa deteksi halaman sobek ada di daftar penyusutan pada SQL Server 2012, jadi apa masalahnya dengan bagaimana hal itu diatur pada database Anda untuk memulai. Jika saya melihatnya diatur selain CHECKSUM, saya segera mengubahnya dan beralih ke tugas lain yang lebih penting. Saya tidak khawatir tentang bagaimana konfigurasi yang buruk dilakukan, lebih penting untuk memperbaikinya dan kemudian memastikan mereka yang memiliki izin untuk mengubahnya diberitahu tentang mengapa item konfigurasi itu tidak boleh diubah ke hal lain. Hanya $ 0,02 saya
sumber
Seperti @Thomas Stringer dan @Kin mengatakan itu diperkenalkan dalam SQL Server 2005 dan saya percaya ini bekerja di semua edisi SQL Server. Untuk TempDB meskipun CHECKSUM diperkenalkan di SQL Server 2008
http://blogs.msdn.com/b/sqlserverstorageengine/archive/2008/03/23/checksum-and-tempdb.aspx
sumber