Wie kopiere ich meine SQL Azure-Datenbank in eine lokale SQL Server-Instanz?

12

Ich habe eine OLTP-Datenbank, die auf einer SQL Azure-Instanz gehostet wird. Ich möchte eine Kopie der Datenbank aus der Cloud herunterladen, damit ich einige umfangreiche Extrakte und Abfragen im OLAP-Stil ausführen kann, ohne die Quellendatenbank zu beeinträchtigen.

Wie ziehe ich eine Kopie der Datenbank auf eine lokale SQL Server-Instanz herunter?

Nick Chammas
quelle

Antworten:

9

Verwenden Sie den SQL Azure-Migrationsassistenten :

Der SQL Azure-Migrationsassistent (SQLAzureMW) bietet Ihnen die Optionen zum Analysieren, Generieren von Skripten und Migrieren von Daten (über BCP) von:

  1. SQL Server zu SQL Azure
  2. SQL Azure zu SQL Server
  3. SQL Azure zu SQL Azure
Nick Chammas
quelle
Scheint nicht mit LocalDB zu funktionieren. Bei der Auswahl der Zieldatenbank wird die Fehlermeldung "Verschlüsselung wird nicht unterstützt" angezeigt. Das Tool kann keine Verbindung zu meiner localdb-Instanz herstellen
tobiak777
@ red2nb - Ich weiß nichts über LocalDB, aber der Fehler deutet vielleicht darauf hin, dass es sich nicht um ein Problem mit LocalDB handelt, sondern um ein Problem mit der Zieldatenbank, die verschlüsselt wird.
Nick Chammas
4

Verfassen Sie ein bcpSkript, das den Inhalt aller Ihrer Tabellen in lokale Dateien exportiert.

Beginnen Sie mit dem Schreiben einer Abfrage, die einen bcpBefehl zum Exportieren jeder Tabelle in Ihrer Zieldatenbank in einen Pfad auf Ihrem Zielcomputer ausgibt :

SELECT 
      'bcp '
    + SCHEMA_NAME(schema_id) + '.' + name
    + ' out '
    + ' D:\local_backup_directory\' + SCHEMA_NAME(schema_id) + '.' + name + '.txt'
    + ' -c '
    + ' -S servername.database.windows.net '
    + ' -d database_name '
    + ' -U username '
    + ' -P password'
FROM sys.tables;

Führen Sie diese Abfrage mit bcpIhrer SQL Azure-Datenbank auf dem Computer aus, auf den Sie kopieren möchten, und speichern Sie die Ergebnisse in einer cmdDatei. Führen Sie diese cmdDatei aus, um jede Tabelle in eine Textdatei zu exportieren.

C:\> REM ask bcp to save the results of the above query to a file
C:\> bcp "SELECT      'bcp '    + SCHEMA_NAME(schema_id) + '.' + name   + ' out '   + ' D:\backup_directory\' + SCHEMA_NAME(schema_id) + '.' + name + '.txt'    + ' -c '    + ' -S servername.database.windows.net '    + ' -d database_name '  + ' -U username '   + ' -P password' FROM sys.tables;" queryout output_path\bcp_script.cmd -c -S servername.database.windows.net -d database_name -U username -P password

C:\> REM execute the bcp commands saved to file
C:\> output_path\bcp_script.cmd

Dies ist ein schneller und unsauberer Ansatz, der sich nicht für große Datenbanken oder komplexe Schemata eignet .

Nick Chammas
quelle
2

Ich habe festgestellt, dass diese Liste ein neues Tool enthält, nämlich Azure SQL Database Backup von Idera . Es ist kostenlos und sie machen normalerweise gute Werkzeuge, also ist es einen Versuch wert.

Eine andere Möglichkeit zum Exportieren von Datenbanken (diesmal nur Schema, keine Daten) nach Azure besteht in der Verwendung von DAC-Paketen (DACPAC-Dateien, die aus Management Studio oder Visual Studio 2010 extrahiert wurden). Dies funktioniert nur ab SQL 2008 R2 SP1 +.

Details zu den Data-Tier-Anwendungen finden Sie hier:

Marian
quelle
0

Sie können den SSMS-Datenimportassistenten verwenden. Hier ist ein guter Blog-Beitrag dazu mit Bildern. Der wichtigste Punkt ist die Auswahl eines .NET-Datenanbieters für die Quellendatenbank. Ich hatte viele Probleme damit, es mit anderen (und standardmäßig nativen) Anbietern zum Laufen zu bringen.

user16741
quelle