Ripristino locale Bacpac del database SQL di Azure


130

Ho creato un backup BACPAC del mio database SQL di Azure usando l'opzione "Esporta" nella Console di gestione di Azure.

Dopo averlo scaricato sul mio computer, sono un po 'bloccato su come posso ripristinarlo su un'istanza locale di SQL Server. Mi sono imbattuto nello strumento DacImportExportCli ma non sono riuscito a trovare un esempio di ripristino locale.

Anche se qualcuno ha scritto una sceneggiatura che lo fa (quindi può essere programmato) sarebbe fantastico.


8
Questa potrebbe essere una cosa di SQL Server 2012, ma in SQL Server Management Studio se faccio clic con il pulsante destro del mouse sulla cartella del database del mio server locale e scelgo Importa applicazione a livello di dati che avvia una procedura guidata che legge nel file BACPAC per produrre la copia del mio database di Azure . La procedura guidata può anche connettersi direttamente al BLOB-store per ottenere il file BACPAC se si preferisce non copiarlo prima in locale.
silente il

L'hai mai capito?
Nate,

3
@dumbledad Credo che sia una cosa SSMS di SQL 2012 importare l'applicazione di livello dati, 2008R2 sembra avere solo la capacità di esportare DACPAC, non riesco a vedere un'opzione di importazione.
Jamiebarrow,

Risposte:


179

Questo può essere fatto semplicemente tramite SQL Server Management Studio 2012

  1. Fare clic con il tasto destro sul nodo Connessione> Database e selezionare " Importa applicazione livello dati ... "
  2. Seleziona " Avanti " nel passaggio introduttivo.
  3. inserisci qui la descrizione dell'immagine
  4. Sfoglia o connettiti a un account di archiviazione in cui sono conservati i backup.

2
Questo è perfetto. Lo strumento RedGate può essere flakey. Sono contento di vedere un'opzione supportata dalla SM.
gilly3,

2
Funziona con SQL Express 2012? Perché ho il seguente messaggio di errore: il conteggio non carica il modello dello schema dal pacchetto. (Microsoft.SqlServer.Dac) ------------------------------ INFORMAZIONI AGGIUNTIVE: errore interno. Il tipo di piattaforma di destinazione interna SqlAzureDatabaseSchemaProvider non supporta la versione del file di schema '2.5'. (File: C: \ Users \ xxxxx \ Downloads \ dbname-2013-10-10-20-2.bacpac) (Microsoft.Data.Tools.Schema.Sql)
Antoine Meltzheim

@ElTone Ho appena ripristinato un bacpac direttamente da Archiviazione di Azure nel mio database SQL Server Express 2012 locale usando Management Studio. Non ho visto alcun errore e i dati sembrano essere lì. Qualcuno afferma che l'installazione di una versione più recente di SQL Server Data Tools li ha aiutati (ma non si riferiscono a Management Studio) social.msdn.microsoft.com/Forums/windowsazure/en-US/…
Juha Palomäki,

@Juha Palomäki Corretto: l'installazione dell'ultima versione di SSDT ha risolto il problema. Adesso va tutto meglio.
Antoine Meltzheim,

4
Sembra esserci qualche limitazione sulla quantità di file bacpac di grandi dimensioni che è possibile importare con Management Studio. Se colpisci l'eccezione OutOfMemory, controlla la risposta di Flea su come utilizzare lo strumento da riga di comando SqlPackage.exe
Juha Palomäki

52

Avevo bisogno di esportare un database SQL Azure e quindi importarlo in un server SQL 2008 R2 locale (Nota: utilizzo anche Visual Studio 2010). Microsoft certamente ha fatto di tutto per rendere questo compito doloroso, tuttavia, sono stato in grado di farlo nel modo seguente:

  1. Vai a questo link http://msdn.microsoft.com/en-us/jj650014 e installa SQL Server Data Tools per Visual Studio 2010

  2. Questo verrà installato sul tuo disco locale. Nel mio caso qui è dove lo ha messo: C: \ Programmi (x86) \ Microsoft SQL Server \ 110 \ DAC \ bin

  3. Passare a questo tramite la riga di comando o PowerShell

  4. Si desidera eseguire SqlPackage.exe

  5. Aprire questo collegamento per visualizzare un elenco di tutte le opzioni di parametro per SqlPackage.exe ( http://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx )

  6. Ecco la mia riga di comando che dovevo eseguire per importare un file .bacpac nel mio server SQL 2008 R2 locale:

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

/tdnè il nome del database in cui ripristinare il file bacpac. /tsnè il nome del tuo server SQL.

Puoi vedere tutte queste descrizioni dei parametri sul link da # 5.


Questo può essere realizzato ancora più facilmente se hai installato SSMS 2012. Puoi semplicemente usare la procedura guidata come descritto da @Josiah sopra, anche con un server 2008 R2.
DanO,

2
Ho trascorso così tanto tempo a cercare questa soluzione che sono riuscito a scaricare l'intero Managment Studio 2014.
Santhos,

SqlPackage è stato sospeso per me sul passaggio "aggiornamento database" fino a quando non ho eliminato completamente il database di destinazione
michael_hook

10

È possibile ripristinare il BACPAC utilizzando gli strumenti lato client. I video sono qui:

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

Gli strumenti sono disponibili qui:

http://sqldacexamples.codeplex.com/documentation


Lo strumento dovrebbe supportare l'importazione del bacpac nel database locale. Ad esempio, l'importazione di un bacpac in un database utilizzando Windows Auth sarebbe simile al seguente: "DacCli -S myserver -E -D nw_restored -F northwind.bacpac -I". Tuttavia, l'elenco codeplex degli assembly richiesti non è aggiornato: nessuno dei collegamenti funzionerebbe, quindi lo strumento non funzionerà (ha un prerequisito su alcuni componenti CTP di SQL 2012).
David Airapetyan,

Ho installato tutti i componenti sulla mia macchina, quindi ho provato a importare un bacpac con DacCli - ha funzionato (vedere la riga di comando nel mio commento precedente). Ci sono voluti circa 20 minuti per bacpac da 100 MB.
David Airapetyan,

7

Sembra che le mie preghiere siano state esaudite. Redgate ha lanciato il suo strumento SQL Azure Backup GRATUITAMENTE oggi - http://www.red-gate.com/products/dba/sql-azure-backup/download


Diversi problemi: 1. Lo sviluppo attivo di SQL Azure Backup per ora è interrotto (questa nota viene visualizzata quando si esegue l'ultima versione dello strumento) 2. Quando si esegue il backup direttamente da Azure a SQL locale, non sembra passare dal bacpac invece implementa una sorta di copia di schema / dati cresciuta in casa. Nella mia esperienza, è stato molto lento. 3. Per basarsi sul punto precedente, il meccanismo è difettoso - Ho avuto più tabelle non
riuscite

2
Questa risposta dovrebbe essere aggiornata o non essere più la risposta accettata. Da allora lo strumento collegato è diventato una soluzione "cloud" e non supporta i backup locali.
Timothy Strimple,

2
Lo strumento di backup è ancora disponibile da red-gate.com/products/dba/sql-azure-backup/Discontinued
Ben Foster

5

Se stai usando SSMS 2012, è semplice come fare clic con il tasto destro sulla cartella Database sotto un server in Esplora oggetti e scegliere "Importa applicazione livello dati ...".

C'è un dosso sulla strada a cui prestare attenzione: a partire dal 26 marzo 2013 (quando avevo bisogno di scoprire come farlo da solo), quando esporti un .bacpac da Azure, verrà scaricato come file .zip, non un file .bacpac e la finestra di dialogo del file aperta dal pulsante Sfoglia nella procedura guidata di importazione mostrerà solo * .bacpac o . nei filtri di file, implicando che .zip non è supportato. Tuttavia, se si modifica il filtro in . , seleziona il file .zip scaricato e fai clic su Avanti, la procedura guidata procederà normalmente.


2
Questa è la risposta corretta Ora puoi installare la versione standalone gratuita di SSMS 2016 e fornisce tutte queste funzionalità
Aaron

3

Ecco uno script per ripristinare un sacco di file bacpac contemporaneamente: Ripristino in blocco dei file bacpac locali

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] }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.