So speichern Sie nicht benötigte Daten vom MS SQL-Server

So speichern Sie nicht benötigte Daten vom MS SQL-Server

Ich wurde gebeten, eine große Tabelle in MS SQL Server 2008 zu kürzen. Die Daten werden nicht benötigt, könnten aber alle zwei Jahre einmal benötigt werden. Sie müssen NIEMALS geändert, sondern nur angezeigt werden.

Da ich die Daten nicht täglich benötige, stellt sich die Frage: Was mache ich, um sie zu schützen und zu sichern?

Bedenken Sie bitte, dass ich vielleicht alle zwei Jahre Zugriff darauf benötige und es für uns OK ist, wenn der Wiederherstellungsvorgang ein paar Stunden dauert.

Die gesamte Tabelle umfasst etwa 3 Millionen Zeilen und ich muss sie auf etwa 1 Million Zeilen kürzen.

Antwort1

Wie möchten Sie auf die Tabellendaten zugreifen?

Wenn Sie etwas Flexibleres verwenden (Ihren eigenen Code oder einfach SQL-Abfragen), besteht ein einfacher Ausweg darin, die benötigte Tabelle in eine andere Datenbank zu kopieren und sie dann vom Server zu trennen. Anschließend kürzen Sie die Tabelle (oder löschen die unerwünschten Zeilen, obwohl Sie dabei möglicherweise die Größe Ihres T-Logs überprüfen möchten).

Wenn Sie sie benötigen, können Sie die entsprechende Datenbank jederzeit im Nur-Lese-Modus erneut aus dem Speicher mounten. Wenn Sie Abfragen für mehrere Backups gleichzeitig ausführen müssen, können Sie eine Ansicht erstellen, die alle Daten neu gruppiert.

Wenn Sie eine Software verwenden, die es Ihnen nicht erlaubt, den Zugriff auf diese Tabelle anzupassen, können Sie die Tabelle trotzdem selbst in eine andere Datenbank kopieren. Das Wiederherstellen dieser Sicherung kann jedoch problematisch sein, da Sie den vorhandenen Kontext (die anderen Tabellenzustände) mit den alten Daten zusammenführen müssen. Außerdem könnte sich die Datenstruktur geändert haben, sodass eine Wiederherstellung nahezu unmöglich ist.

In diesem Fall würde ich vorschlagen, dass Sie einfach eine Sicherungskopie der gesamten Datenbank erstellen und diese speichern (vorzugsweise zusammen mit einer Version der Software, die darauf zugreift).

Antwort2

3 Millionen Zeilen sind nicht sehr viel, insbesondere für SQL Server. Außerdem können Sie eine Tabelle nicht kürzen und Zeilen behalten. Durch das Kürzen wird die Tabelle vollständig geleert.

Auch das Löschen ist langsam, selbst wenn Sie Zeit haben.

Ich würde mit der rechten Maustaste auf Ihre Tabelle klicken, das Skript ausführen und eine neue Tabelle erstellen. Benennen Sie sie um, z. B. in Table_Backup11232011. Denken Sie daran, auch Ihre Primärschlüssel umzubenennen ...

insert into Table_Backup11232011 select * from oldtable

truncate table oldtable

Jetzt haben Sie ein Backup und eine neue Tabelle. 3 Millionen Zeilen kosten Sie wahrscheinlich nur ein paar Hundert Megabyte, also nichts.

Antwort3

Archivierung/Zugänglichkeit: Hier ist ein Gedanke ... 1) Löschen Sie Ihre Daten. 2) Platzieren Sie diese Tabelle in ihrer eigenen SQL-Dateigruppe. 3) Brennen Sie die Datei auf ein schreibgeschütztes Gerät (sofern Speicherplatz vorhanden ist). 4) Verwenden Sie ALTER TABLE, um den Speicherort der Datei neu zu definieren und sie als schreibgeschützt zu definieren. 5) Party weiter, Garth!

Nun sind die Daten nicht mehr auf Ihren Festplatten, unveränderlich und dennoch bei Bedarf verfügbar.

verwandte Informationen