Mit Bulk Copy & Co. am Log vorbei

Das kopieren von Massendaten in einer SQL-Server Datenbank kann man ganz schön viel Zeit in Anspruch nehmen. Um Daten von einer Tabelle in eine andere zu schieben – zum Beispiel um Erweiterungen an einer Faktentabelle vorzunehmen – können einige Stunden ins Land ziehen. Ganz abgesehen von dem nicht unerheblichen Speicherbedarf für das Log-File.
Vor kurzem hatte ich einen Fall, bei dem es genau darauf ankam: Über 200 Mio. historisierte Datensätze in einer Faktentabelle, die wegen einer Erweiterung des Datenmodells “im Weg” waren. Nach der Anpassung des Datenmodells mit dem Modeler dauerte es fast einen ganzen Tag, bis die Daten mit der INSERT-Anweisung von der Faktentabelle in eine temporäre Tabelle und wieder zurück gespielt waren. Für die lange Laufzeit war hauptsächlich das Log-Verhalten des SQL-Servers verantwortlich.
Heute möchte ich ein paar Möglichkeiten vorstellen, wie Daten aus einer Tabelle heraus übertragen werden können, ganz ohne eine Spur im Datenbank-Log.

Den gesamten Artikel können Sie hier abrufen.

2 Gedanken zu “Mit Bulk Copy & Co. am Log vorbei

  1. Für alle Copy&Paste-Freunde unter uns: Da ist ein kleiner Typo im Switch-Statement.
    ALTER TABLE MySourceTable SWITCH TO MyDestinationTable

Schreibe einen Kommentar