Der beste Weg, um die Prüfsumme auf alle Seiten zu setzen

7

Ich habe eine SQL Server-Datenbank mit der PAGE_VERIFYOption gesetzt NONE. Wenn ich dies auf setze, CHECKSUMwird nur die von diesem Zeitpunkt an geänderte Seite berechnet und auf der Seite gespeichert.

Ich suche nach dem besten Weg, um mindestens alle Tabellen- und Indexdaten mit Prüfsummen zu versehen.

Meine ursprüngliche Idee wäre, alle Clustered-Indizes zu löschen und neu zu erstellen. Für Tabellen ohne Clustered-Index würde ich einen erstellen und ihn dann wieder löschen.

Das sollte zu mindestens einem Schreibvorgang auf jeder Daten- und Indexseite führen, ist aber etwas umständlich. Hat jemand eine bessere Idee?

TToni
quelle

Antworten:

8

Meiner Ansicht nach wäre der umfassendste Weg, die Datenbank mit TDE zu verschlüsseln / entschlüsseln. Dadurch wird sichergestellt, dass sich jede Seite im Speicher ändert und auf die Festplatte geschrieben wird.

Ich habe dies mit Erfolg bei "Legacy" -DBS versucht, die ursprünglich in SQL2000 erstellt wurden, nachdem ich festgestellt hatte, dass auf mehreren Seiten keine tatsächlichen Prüfsummen (0x ... 200) vorhanden waren, wenn Sie sich den Header mit der dbcc-Seite ansehen.

Wenn Sie dies versuchen würden, würde ich empfehlen, es auf einer wiederhergestellten Version der Live-Datenbank zu testen, nur für den Fall, dass Sie eine unentdeckte Beschädigung haben, die abgefangen werden könnte, und den Verschlüsselungsprozess blockieren. Es gibt Flaggen, um damit umzugehen, aber gehen Sie besser auf Nummer sicher.

Natürlich möchten Sie das von der Verschlüsselung verwendete Zertifikat sichern, damit Sie während der Verschlüsselung der Datenbank für alle Eventualitäten abgesichert sind.

Wenn jemand eine bessere Idee hat, Prüfsummen auf allen Seiten zu schreiben, würde ich es gerne hören :-)

John Alan
quelle
Das ist gut so, zumal es alle Seiten in der Datenbank abfängt und im Hintergrund läuft. Das einzige Problem ist, wenn Sie sich mit einer Wiederherstellung aus diesem Zeitraum befassen müssen, aber das ist nur das übliche TDE-Zeug. Heißester Kandidat für akzeptierte Antwort bisher :-)
TToni
1
Ich mag es, weil es auch sicherstellen würde, dass Prüfsummen auf Seiten sind, die nicht zu Tabellen / IDXs gehören.
John Alan
Für zukünftige Leser habe ich meine Antwort gelöscht, da TDE die gesamte Datenbank berühren würde, während das Neuerstellen von Indizes dies nicht tun würde.
Jon Seigel