Warum ist eine .bacpac-Datei im Vergleich zu einer .bak-Datei derselben Datenbank so klein?

Ich habe Sicherungen meiner SQL Server 2014 Express-Datenbanken für den Import auf andere Server durchgeführt und einen Unterschied in der Dateigröße zwischen und .bak.

Warum ist eine .bacpac -Datei im Vergleich zu einer .bak Datei derselben Datenbank?

Vielen Dank für Ihre Erkenntnisse!

Antwort

A

  • .bacpac file = Schema + Daten. Beachten Sie, dass Daten im nativen Format BCP-fähig sind (nicht lesbar für Menschen).

    • Sie können die .bacpac in .zip umbenennen, um die anzuzeigen tatsächlicher Inhalt.

    • Sie können ...DAC\bin\sqlpackage.exe verwenden, um die .bacpac Inhalte programmgesteuert.

    • Es handelt sich um einen Schnappschuss mit Benutzerdaten + Schema aus SQL Server oder Azure SQL-Datenbank.

  • Sicherung (normalerweise mit der Erweiterung .bak) = Eine vollständige Datenbanksicherung enthält eine vollständige Kopie der Datenbank und Bietet einen einzelnen Zeitpunkt, zu dem die Datenbank wiederhergestellt werden kann. Eine vollständige Sicherung enthält einige Transaktionsprotokolldatensätze, damit die wiederhergestellte Komponente (Datenbank, Datei oder Dateigruppe) transaktionskonsistent gemacht werden kann.

Ein BACPAC ist kein Ersatz für eine vollständige Sicherung. Es ist nur ein Snapshot, mit dem eine Datenbank von einem Server auf einen Server verschoben werden kann eine andere (oder in die Cloud) und Archivierung einer vorhandenen Datenbank in einem offenen Format .

Nach meinem Test sind die Ergebnisse

Geben Sie hier die Bildbeschreibung ein.

Kommentare

  • Die Protokolldatei ist wahrscheinlich der Hauptgrund für den Größenunterschied.
  • Ich ' würde dort enthält auch keine Indexdaten im .bacpac, was wahrscheinlich einen großen Beitrag zur Dateigröße leistet.

Antwort

Eine Sicherung, die über die (.bak) ist eine seitenweise Kopie einer Datenbank. Beachten Sie, dass die SQL Server-Datenbank nicht nur Datenseiten enthält. Es gibt auch Seiten mit Indizes, die groß sein können. Weitere Details hier

Eine Sicherung, die mit der Export Data-Tier-Anwendung erstellt wurde (.bacpac) Operation ist einfach eine exportierte Zeile aus einer Datenbank im XML-Format, die in einem Archiv abgelegt wird. Sie können den Inhalt von BACPAC manuell anzeigen. Ändern Sie einfach die Erweiterung dieser Datei in .zip.

Die Größe der .bacpac -Datei ist direkt proportional zur Anzahl der Datensätze in einer Datenbank (unter Berücksichtigung des Komprimierungsverhältnisses).

Die Größe der Datei .bak hängt nicht nur von den Daten, sondern auch von der Größe der Indizes ab.

Manchmal kann dies ein Problem sein. Überprüfen Sie beispielsweise diese alte Diskussion

Daher die .bacpac Datei ist normalerweise kleiner.

Ich habe die einfachsten Tests mit der Datenbank AdventureWorks durchgeführt und erhalten diese Ergebnisse.

AdventureWorks.bacpac - 17 mb AdventureWorks.bacpac.zip - 16 mb AdventureWorks_with_compression.bak - 49 mb AdventureWorks_with_compression.bak.zip - 47 mb 

Soll ich .bacpac verwenden, um meine Sicherungsgröße zu reduzieren?

Nr.

Export \ Import Data Tier Application weist mehrere wesentliche Nachteile auf, die für große Datenbanken von entscheidender Bedeutung sind:

  1. Dies ist keine transaktionskonsistente Operation. Die Tabellen werden nacheinander exportiert. Möglicherweise liegt ein Problem mit dem Fremdschlüssel vor. Das ist doppelt schlecht, weil Sie es erst entdecken, wenn Sie versuchen, sich zu erholen. Wenn Sie diesen Vorgang ausführen, müssen Sie daher einen Snapshot der Datenbank erstellen und den Snapshot exportieren.
  2. Der Export und Import dauert viel länger. In dem Moment, in dem Sie dringend eine Wiederherstellung ausführen müssen, können Sie dies nicht tun, da die Wiederherstellung von .bacpac mehrere Stunden dauert.
  3. Der Export kann den Server erheblich belasten, insbesondere bei großen Tabellen, die zusammen mit dem vorherigen Punkt regelmäßige Backups zu einer zweifelhaften Entscheidung machen.

Mit dem Befehl BACKUP DATABASE erstellte klassische Sicherung weist diese Nachteile nicht auf. Um Platz zu sparen, verwenden Sie Wiederherstellung zu einem bestimmten Zeitpunkt

Exportieren \ Importieren der Datenebenenanwendung kann als Möglichkeit zum Erstellen einer Sicherung nur für kleine Datenbanken betrachtet werden, wenn Sie keinen Zugriff darauf haben das Dateisystem. In diesem Fall exportieren Sie die Live-Datenbank unter keinen Umständen. Erstellen Sie unbedingt einen Snapshot für den konsistenten Export.

Antwort

Der größte Unterschied besteht darin, dass die Daten (mit zip) für die Datei .bacpac komprimiert werden, was bei einer normalen .bak nicht der Fall ist Datei. Komprimieren Sie einfach die Datei .bak und stellen Sie fest, dass sie viel kleiner ist;)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.