Lokale Wiederherstellung der Azure SQL-Datenbank Bacpac Local

130

Ich habe eine BACPAC-Sicherung meiner Azure SQL-Datenbank mithilfe der Option "Exportieren" in der Azure-Verwaltungskonsole erstellt.

Nachdem ich dies auf meinen Computer heruntergeladen habe, bin ich ein wenig festgefahren, wie ich dies auf einer lokalen SQL Server-Instanz wiederherstellen kann. Ich bin auf das DacImportExportCli-Tool gestoßen, konnte jedoch kein Beispiel für eine lokale Wiederherstellung finden.

Auch wenn jemand ein Skript geschrieben hat, das dies tut (damit es geplant werden kann), wäre das fantastisch.

Ben Foster
quelle
8
Dies kann eine SQL Server 2012-Sache sein, aber im SQL Server Management Studio, wenn ich mit der rechten Maustaste auf den Datenbankordner meines lokalen Servers klicke und Datenebenenanwendung importieren wähle, wird ein Assistent gestartet, der die BACPAC-Datei einliest, um die Kopie meiner Azure-Datenbank zu erstellen . Der Assistent kann auch eine direkte Verbindung zum Blob-Store herstellen, um die BACPAC-Datei abzurufen, wenn Sie sie nicht zuerst lokal kopieren möchten.
Dumbledad
Hast du das jemals herausgefunden?
Nate
3
@dumbledad Ich glaube, es ist eine SQL 2012 SSMS-Sache, die Data-Tier-Anwendung zu importieren. 2008R2 scheint nur die Fähigkeit zu haben, DACPACs zu exportieren. Eine Importoption wird nicht angezeigt.
Jamie Barrow

Antworten:

179

Dies kann einfach über SQL Server Management Studio 2012 erfolgen

  1. Klicken Sie mit der rechten Maustaste auf den Knoten Verbindung> Datenbanken und wählen Sie " Datenebenenanwendung importieren ... ".
  2. Wählen Sie im Einführungsschritt " Weiter ".
  3. Geben Sie hier die Bildbeschreibung ein
  4. Durchsuchen oder stellen Sie eine Verbindung zu einem Speicherkonto her, in dem Sicherungen gespeichert werden.
Josiah Ruddell
quelle
2
Dies ist perfekt. Das RedGate-Tool kann Flakey sein. Ich bin froh, eine von MS unterstützte Option zu sehen.
Gilly3
2
Funktioniert es mit SQL Express 2012? Weil ich die folgende Fehlermeldung habe: Anzahl Schemamodell nicht aus Paket laden. (Microsoft.SqlServer.Dac) ------------------------------ ZUSÄTZLICHE INFORMATIONEN: Interner Fehler. Der interne Zielplattformtyp SqlAzureDatabaseSchemaProvider unterstützt die Schemadateiversion '2.5' nicht. (Datei: C: \ Users \ xxxxx \ Downloads \ dbname-2013-10-10-20-2.bacpac) (Microsoft.Data.Tools.Schema.Sql)
Antoine Meltzheim
@ElTone Ich habe gerade einen Bacpac direkt aus Azure Storage in meiner lokalen SQL Server Express 2012-Datenbank mithilfe von Management Studio wiederhergestellt. Habe keine Fehler gesehen und die Daten scheinen da zu sein. Jemand erwähnt, dass die Installation einer neueren Version der SQL Server- Datentools
Juha Palomäki
@Juha Palomäki Richtig: Die Installation der neuesten Version von SSDT hat das Problem behoben. Jetzt ist alles besser.
Antoine Meltzheim
4
Es scheint einige Einschränkungen hinsichtlich der Anzahl der Bacpac-Dateien zu geben, die Sie mit Management Studio importieren können. Wenn Sie auf die OutOfMemory-Ausnahme klicken, überprüfen Sie Fleas Antwort auf die Verwendung des Befehlszeilentools SqlPackage.exe
Juha Palomäki
52

Ich musste eine SQL Azure-Datenbank exportieren und dann in einen lokalen SQL 2008 R2-Server importieren (Hinweis: Ich verwende auch Visual Studio 2010). Microsoft hat sich sicherlich sehr bemüht, dies zu einer schmerzhaften Aufgabe zu machen. Ich konnte dies jedoch folgendermaßen tun:

  1. Gehen Sie zu diesem Link http://msdn.microsoft.com/en-us/jj650014 und installieren Sie die SQL Server-Datentools für Visual Studio 2010

  2. Dies wird auf Ihrem lokalen Laufwerk installiert. In meinem Fall wurde es hier abgelegt: C: \ Programme (x86) \ Microsoft SQL Server \ 110 \ DAC \ bin

  3. Navigieren Sie dazu über die Befehlszeile oder Powershell

  4. Sie möchten die Datei SqlPackage.exe ausführen

  5. Öffnen Sie diesen Link, um eine Liste aller Parameteroptionen für SqlPackage.exe anzuzeigen ( http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx ).

  6. Hier ist meine Befehlszeile, die ich ausführen musste, um eine .bacpac-Datei in meinen lokalen SQL 2008 R2-Server zu importieren:

    . \ SqlPackage.exe / a: Importieren Sie /sf:C:\mydatabasefile.bacpac / tdn: NorthWind / tsn: BINGBONG

/tdn ist der Name der Datenbank, in der Ihre Bacpac-Datei wiederhergestellt werden soll. /tsnist der Name Ihres SQL Servers.

Sie können alle diese Parameterbeschreibungen auf dem Link von # 5 sehen.

Floh
quelle
Dies kann noch einfacher erreicht werden, wenn Sie SSMS 2012 installiert haben. Sie können den Assistenten einfach wie oben von @Josiah beschrieben verwenden, auch mit einem 2008 R2-Server.
DanO
2
Ich habe so viel Zeit damit verbracht, nach dieser Lösung zu suchen, dass ich inzwischen das gesamte Management Studio 2014 herunterladen konnte.
Santhos
SqlPackage hing für mich beim Schritt 'Datenbank aktualisieren', bis ich die Zieldatenbank vollständig
gelöscht habe
10

Sie können den BACPAC mithilfe der clientseitigen Tools wiederherstellen. Videos sind hier:

http://dacguy.wordpress.com/2011/09/09/importexport-services/

Die Tools finden Sie hier:

http://sqldacexamples.codeplex.com/documentation

ABC
quelle
Das Tool soll das Importieren des Bacpacs in die lokale Datenbank unterstützen. Das Importieren eines Bacpacs in eine Datenbank mit Windows Auth sieht beispielsweise folgendermaßen aus: "DacCli -S myserver -E -D nw_restored -F northwind.bacpac -I". Die Codeplex-Liste der erforderlichen Assemblys ist jedoch veraltet. Keiner der Links würde funktionieren, sodass das Tool nicht ausgeführt wird (Voraussetzung für einige SQL 2012 CTP-Komponenten).
David Airapetyan
Ich habe alle Komponenten auf meinem Computer installiert, also habe ich versucht, einen Bacpac mit DacCli zu importieren - es hat funktioniert (siehe die Befehlszeile in meinem vorherigen Kommentar). Es dauerte ungefähr 20 Minuten für 100 MB Bacpac.
David Airapetyan
7

Scheint, meine Gebete wurden beantwortet. Redgate hat heute sein KOSTENLOSES SQL Azure Backup-Tool gestartet - http://www.red-gate.com/products/dba/sql-azure-backup/download

Ben Foster
quelle
Mehrere Probleme: 1. Die aktive Entwicklung von SQL Azure Backup wird vorerst gestoppt (dieser Hinweis wird angezeigt, wenn Sie die neueste Version des Tools ausführen). 2. Wenn Sie direkt von Azure auf lokales SQL sichern, scheint dies nicht zu passieren bacpac implementiert stattdessen eine Art selbst erstelltes Schema / Datenkopie. Nach meiner Erfahrung war es sehr langsam. 3. Um auf dem vorherigen Punkt aufzubauen, ist der Mechanismus fehlerhaft - ich hatte mehrere Tabellen, die nicht übertragen werden konnten, weil das Tool keinen eindeutigen Schlüssel erkennen konnte
David Airapetyan
2
Diese Antwort sollte aktualisiert werden oder nicht mehr die akzeptierte Antwort sein. Das verknüpfte Tool ist inzwischen zu einer "Cloud" -Lösung geworden und unterstützt keine lokalen Sicherungen.
Timothy Strimple
2
Das Backup-Tool ist weiterhin unter red-gate.com/products/dba/sql-azure-backup/Discontinued
Ben Foster
5

Wenn Sie SSMS 2012 verwenden, müssen Sie nur mit der rechten Maustaste auf den Ordner "Datenbanken" unter einem Server im Objekt-Explorer klicken und "Anwendung auf Datenebene importieren ..." auswählen.

Es gibt eine Unebenheit auf der Straße, auf die Sie achten müssen: Wenn Sie ab dem 26. März 2013 (als ich selbst herausfinden musste, wie das geht) eine .bacpac-Datei aus Azure exportieren, wird sie als ZIP-Datei heruntergeladen. nicht eine .bacpac - Datei und der Datei - Dialog, der nur entweder * .bacpac zeigen wird durch die Schaltfläche Durchsuchen in dem Import - Assistenten geöffnet wird , oder . in den Dateifiltern bedeutet dies, dass .zip nicht unterstützt wird. Wenn Sie jedoch den Filter auf ändern . Wählen Sie Ihre heruntergeladene ZIP-Datei aus und klicken Sie auf Weiter. Der Assistent wird normal fortgesetzt.

Adam Anderson
quelle
2
Dies ist die richtige Antwort. Sie können jetzt die kostenlose Standalone-Version von SSMS 2016 installieren und sie bietet all diese Funktionen
Aaron
3

Hier ist ein Skript zum gleichzeitigen Wiederherstellen einer Reihe von Bacpac-Dateien: Bulk-Wiederherstellung lokaler Bacpac-Dateien

cd [FOLDERPATH]
$goodlist = dir
cd 'C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin'
foreach($i in $goodlist){ $name = $i.Name; $namer = $i.Name.Substring(0, $i.Name.length - 7); .\SqlPackage.exe /a:Import /sf:[FOLDERPATH]\$name /tdn:$namer /tsn:[SERVERNAME] }
Jeffrey Rosselle
quelle