Jak skopiować moją bazę danych SQL Azure do lokalnej instancji SQL Server?

12

Mam bazę danych OLTP hostowaną w instancji SQL Azure. Chcę pobrać kopię bazy danych z chmury, aby móc uruchamiać w niej ciężkie fragmenty i zapytania w stylu OLAP bez wpływu na źródłową bazę danych.

Jak pobrać kopię bazy danych do lokalnej instancji SQL Server?

Nick Chammas
źródło

Odpowiedzi:

9

Użyj Kreatora migracji SQL Azure :

Kreator migracji SQL Azure (SQLAzureMW) zapewnia opcje analiz, generuje skrypty i migruje dane (poprzez BCP) z:

  1. SQL Server na SQL Azure
  2. SQL Azure na SQL Server
  3. SQL Azure do SQL Azure
Nick Chammas
źródło
Wydaje się, że nie działa z LocalDB, mam błąd informujący, że „Szyfrowanie nie jest obsługiwane” na etapie wyboru docelowej bazy danych. Narzędzie nie może połączyć się z moją instancją
localdb
@ red2nb - Nie wiem nic o LocalDB, ale być może, jak sugeruje błąd, nie jest to problem z LocalDB, ale problem z szyfrowaniem docelowej bazy danych.
Nick Chammas
4

Skomponuj bcpskrypt, który eksportuje zawartość wszystkich twoich tabel do plików lokalnych.

Zacznij od napisania zapytania, które wyświetli bcppolecenie, aby wyeksportować każdą tabelę w docelowej bazie danych do ścieżki na komputerze docelowym:

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;

Wykonaj to zapytanie przy użyciu bcpbazy danych SQL Azure z komputera, na który chcesz skopiować i zapisać wyniki w cmdpliku. Wykonaj ten cmdplik, aby wyeksportować każdą tabelę do pliku tekstowego.

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

Jest to szybkie i nieprzyzwoite podejście i nie nadaje się do dużych baz danych ani skomplikowanych schematów.

Nick Chammas
źródło
2

Zauważyłem, że na tej liście jest nowe narzędzie, to kopia zapasowa bazy danych SQL Azure firmy Idera . Jest bezpłatny i zwykle robią dobre narzędzia, więc warto spróbować.

Innym sposobem eksportowania baz danych (ale tym razem tylko schematu, bez danych) na platformę Azure jest użycie pakietów DAC (pliki .dacpac wyodrębnione z Management Studio lub Visual Studio 2010). Działa to tylko z SQL 2008 R2 SP1 +.

Możesz przeczytać szczegółowe informacje o aplikacjach warstwy danych tutaj:

Marian
źródło
0

możesz użyć kreatora importu danych SSMS. Oto dobry post na blogu ze zdjęciami. Kluczowym punktem jest wybór dostawcy danych .NET dla źródłowej bazy danych. Miałem wiele problemów, próbując sprawić, by działał z innymi (i domyślnie - natywnymi) dostawcami.

użytkownik16741
źródło