Ich habe die sofortige Dateiinitialisierung auf unserem SQL Server aktiviert, sodass der "leere" Teil der Datenbankdatei vor der Zuweisung nicht auf Null gesetzt wird. Nach meinem Verständnis bedeutet dies, dass die Datei "gelöschte" Daten enthalten kann.
Jetzt möchte ich eine Kopie einer Datenbank (wahrscheinlich eine Sicherungsdatei) außerhalb des Unternehmens senden. Aber es gibt all diese potenziell sensiblen "gelöschten" Daten in der Datei. Jetzt möchte ich den nicht verwendeten Teil der Datei auf Null setzen.
Ist das möglich? Ich stelle mir vor, ich könnte eine neue Datenbank erstellen und alles kopieren oder vielleicht eine Kopie der Datenbank auf einem anderen Server wiederherstellen, ohne dass die sofortige Dateiinitialisierung aktiviert ist, und dann mit einem ShrinkFile-Befehl aggressiv vorgehen, um den größten Teil oder den gesamten nicht verwendeten Teil der Datenbankdatei zu entfernen , aber gibt es eine weniger manuelle und zeitaufwändige Methode? Idealerweise ein Befehl, um SQL anzuweisen, die Datei auf Null zu setzen, wie dies der Fall gewesen wäre, wenn die sofortige Dateiinitialisierung nicht aktiviert worden wäre.
Antworten:
Ein SQL Server - Backup sichert nur Ausdehnungen , die verwendet werden, um Daten zu halten. Die nicht verwendeten Speicherbereiche werden von der Sicherung zurückgelassen. Wenn eine Seite für Daten verwendet wird, wird sie für die Verwendung nach Bedarf formatiert, sodass diese Seite frei von alten Daten ist.
Daher müssen Sie die Datenbank nur sichern und an anderer Stelle wiederherstellen. Die wiederhergestellten Dateien haben dieselbe Größe wie die ursprüngliche Datenbank, die nicht verwendeten Speicherbereiche werden jedoch mithilfe der Funktionen des Zielservers erstellt. Dies kann vollständig oder sofort mithilfe der Festplattenblöcke auf dem Zielserver initialisiert werden.
Da es sich bei den Extents jedoch um die Ebene handelt, auf der Sicherungen durchgeführt werden, können die nicht verwendeten Seiten in dem Umfang möglicherweise noch einige Daten verfügbar machen, wenn sie auf einem anderen Server wiederhergestellt werden. Nicht so viel, wie auf dem Quellserver verfügbar gemacht werden könnte, da die nicht verwendeten Extents nicht wiederhergestellt werden.
quelle
Haben Sie darüber nachgedacht, eine Kopie davon wiederherzustellen, TDE zu aktivieren, wodurch sie auf 0 gesetzt wird, und TDE dann wieder zu deaktivieren? Ich habe das nicht getestet, aber ich denke, es wird funktionieren, aber wir müssen es trotzdem testen.
Haben Sie noch etwas anderes in Betracht gezogen, eine Kopie davon mit deaktiviertem IFI wiederherzustellen, eine neue Dateigruppe mit neuen Dateien zu erstellen, die Größe zu ändern, die Cluster- und andere Indizes für die neue Dateigruppe neu zu erstellen und dann die vorhandene Dateigruppe zu löschen (wenn es sich um die primäre Dateigruppe handelt) Sie müssen es verkleinern, da Sie die Primärdaten nicht löschen können.
quelle