Comment copier ma base de données SQL Azure sur une instance SQL Server locale?

12

J'ai une base de données OLTP hébergée sur une instance SQL Azure. Je souhaite extraire une copie de la base de données du cloud afin de pouvoir exécuter des extraits lourds et des requêtes de style OLAP contre elle sans affecter la base de données source.

Comment extraire une copie de la base de données vers une instance SQL Server locale?

Nick Chammas
la source

Réponses:

9

Utilisez l' assistant de migration SQL Azure :

L'Assistant de migration SQL Azure (SQLAzureMW) vous donne les options pour analyser, générer des scripts et migrer des données (via BCP) à partir de:

  1. SQL Server à SQL Azure
  2. SQL Azure à SQL Server
  3. SQL Azure à SQL Azure
Nick Chammas
la source
Ne semble pas fonctionner avec LocalDB, j'ai une erreur en disant que «le cryptage n'est pas pris en charge» à l'étape lorsque vous sélectionnez la base de données de destination. L'outil n'est pas en mesure de se connecter à mon instance
localdb
@ red2nb - Je ne sais rien de LocalDB, mais peut-être que l'erreur suggère que ce n'est pas un problème avec LocalDB, mais un problème avec la base de données de destination cryptée.
Nick Chammas
4

Composez un bcpscript qui exporte le contenu de toutes vos tables vers des fichiers locaux.

Commencez par écrire une requête qui générera une bcpcommande pour exporter chaque table de votre base de données cible vers un chemin sur votre machine de destination:

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;

Exécutez cette requête à l'aide de bcpvotre base de données SQL Azure à partir de la machine sur laquelle vous souhaitez copier et enregistrez les résultats dans un cmdfichier. Exécutez ce cmdfichier pour exporter chaque table dans un fichier texte.

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

Il s'agit d'une approche rapide et sale, et ne convient pas aux grandes bases de données ou aux schémas complexes.

Nick Chammas
la source
2

J'ai remarqué qu'il y a un nouvel outil dans cette liste, c'est la sauvegarde de base de données Azure Idera . C'est gratuit et ils font généralement de bons outils, donc ça vaut le coup d'essayer.

Une autre façon d'exporter des bases de données (mais cette fois uniquement un schéma, pas de données) vers Azure consiste à utiliser des packages DAC (fichiers .dacpac extraits de Management Studio ou Visual Studio 2010). Cela ne fonctionne qu'à partir de SQL 2008 R2 SP1 +.

Vous pouvez lire les détails sur les applications de niveau données ici:

Marian
la source
0

vous pouvez utiliser l'assistant d'importation de données SSMS. Voici un bon article de blog à ce sujet, avec des photos. Le point clé est de sélectionner le fournisseur de données .NET pour la base de données source. J'ai eu beaucoup de problèmes à essayer de le faire fonctionner avec d'autres fournisseurs (et par défaut natifs).

user16741
la source