Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout

Procédure : utilisation de bcp pour migrer une base de données vers la Base de données SQL Azure

Mis à jour: octobre 2014

Vous pouvez utiliser l'utilitaire SQL Server bcp pour déplacer efficacement les données lors de la migration d'une base de données SQL Server sur base de données SQL Microsoft Azure. Commencez par utiliser bcp pour copier les données d'une table source dans un fichier de données. Exécutez de nouveau l'utilitaire pour copier les données du fichier de données dans la table de destination. bcp déplace uniquement les données, c'est pourquoi il doit être utilisé conjointement à un autre processus pour migrer le schéma de la base de données.

L'utilitaire bcp est un utilitaire de ligne de commande conçu pour le téléchargement en masse hautes performances sur SQL Server ou base de données SQL Microsoft Azure. Ce n'est pas un outil de migration. Il n'extrait pas ni ne crée de schéma. Vous devez d'abord transférer un schéma de base de données dans base de données SQL Microsoft Azure à l'aide de l'un des outils de migration de schéma, tels que l'Assistant Générer des scripts, ou en extrayant et un déployant un package d'application de la couche Données (DAC).

L'utilitaire bcp appelle la fonction de copie en bloc de SQL Server qui est également exposée dans les interfaces de programmation d'applications (API) SQL Server. Plusieurs outils de migration, tels que l'Assistant Migration de base de données SQL Microsoft Azure et les fichiers BACPAC DAC utilisent également la fonctionnalité de copie en bloc pour transférer des données.

Utilisez les meilleures pratiques de copie en bloc pour améliorer les performances lorsque vous copiez les données dans une table de destination de grande taille. Par exemple :

  • Utilisez l'option – N pour transférer des données en mode natif afin qu'aucune conversion de type de données ne soit nécessaire.

  • Utilisez l'option b pour spécifier la taille du lot. Chaque lot est importé et enregistré en tant que transaction distincte. Par défaut, toutes les lignes du fichier de données sont importées comme un lot. Si une transaction échoue, seules les insertions du lot actif sont restaurées. Il est recommandé d'identifier la taille de lot la plus adaptée et de l'utiliser pour réduire la perte de connexion à base de données SQL Microsoft Azure pendant la migration des données.

  • Utilisez les indicateurs bcp :

    • Utilisez l'indicateur h « TABLOCK » lors de l'importation pour appliquer un verrou au niveau de la table lors de la mise à jour en bloc pour la durée de l'opération de chargement en masse. En utilisant un verrou de table unique au lieu d'un verrou pour chaque ligne, vous réduisez la surcharge due au verrouillage.

    • Utilisez l'indicateur h « ORDER (…) » lors de l'exportation pour trier le fichier de données. Les performances de l'importation en bloc seront meilleures si les données en cours d'importation sont triées d'après l'index cluster de la table.

  • Pour les grandes tables, partagez la copie d'importation en plusieurs flux de données que vous pouvez exécuter simultanément. Si vous avez copié en bloc les données de la table source dans un seul fichier de données, utilisez les paramètres F firstrow et L lastrow pour spécifier la partie du fichier de données qui est traitée par chaque exécution de bcp.

Pour plus d'informations sur les méthodes conseillées en matière de copie en bloc, consultez Optimisation de l'importation en bloc.

Si vous utilisez IDENTITY pour générer des clés primaires dans une table, utilisez le paramètre E bcp pour conserver les clés générées dans la base de données source. Le paramètre E devrait empêcher toute violation de clé étrangère pendant l'importation, à condition qu'aucune mise à jour ne soit effectuée sur les tables pendant que l'importation s'exécute. Assurez-vous qu'aucune mise à jour n'est possible, comme le fait de mettre la base de données en lecture seule.

noteRemarque
bcp traite une table à la fois, par conséquent, il ne gère pas l'intégrité transactionnelle entre plusieurs tables lors de l'extraction des données depuis une base de données source. Vous pouvez résoudre ce problème en mettant la base de données source en mode mono-utilisateur ou en mode de lecture seule lors d'une exportation.

[Top]

Les tables de la base de données de destination doivent être vides pour l'importation de copie en bloc. Vous ne pouvez pas effectuer plusieurs importations de copies en bloc dans la même table, sauf si vous tronquez ou supprimez toutes les lignes insérées par la copie en bloc précédente.

[Top]

bcp est livré avec SQL Server. Installez les outils clients depuis SQL Server 2008 R2 ou les versions ultérieures de SQL Server pour obtenir une version de bcp prise en charge par base de données SQL Microsoft Azure.

[Top]

Vous devez suivre cinq étapes lorsque vous utilisez bcp pour déplacer les données d'une table dans la base de données source vers la copie de la table dans la base de données de destination :

  1. Migrer le schéma.

    Utilisez un mécanisme de transfert de schéma, comme l'Assistant Génération de scripts ou un fichier BACPAC DAC, pour créer une copie de la base de données dans base de données SQL Microsoft Azure. À la fin de l'opération, toutes les tables doivent avoir été créées dans la base de données base de données SQL Azure, mais ne doivent contenir aucune donnée.

  2. Exporter les données dans des fichiers de données.

    Pour chaque table dans la base de données SQL Server source, exécutez une opération sortante bcp pour copier les données de la table dans un fichier de données. Voici un exemple d'exportation de données depuis une table dans un fichier de données :

    bcp tableName out C:\filePath\exportFileName.dat –S serverName –T –n -q
    
    Le paramètre out indique la copie de données SQL Server. Le paramètre -n effectue la copie en bloc en faisant appel aux types de données par défaut des données (ceux de la base de données). Le paramètre q exécute l'instruction SET QUOTED_IDENTIFIERS ON lors de la connexion entre l'utilitaire bcp et l'instance du moteur de base de données.

  3. Optimiser la copie en bloc.

    Apportez toutes les modifications requises au schéma de la base de données de destination pour accélérer les performances de la copie des données dans de grandes tables, par exemple en désactivant les index non cluster, les déclencheurs et les contraintes.

  4. Importer le fichier de données base de données SQL Azure

    Pour chaque table dans la base de données base de données SQL Microsoft Azure de destination, exécutez l'utilitaire bcp pour copier les données du fichier de données d'exportation dans la table. Cet exemple comporte trois exécutions de bcp pour copier des données dans une seule table à partir d'un fichier de données contenant environ 300 000 lignes. Chaque exécution copie environ 100 000 lignes.

    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b 200 –L 99999 –h”TABLOCK”
    
    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b 200 –F 100000 –L 199999 –h”TABLOCK”
    
    Bcp tableName in c:\filePath\exportFileName.dat –n –U userName@serverName –S tcp:serverName.database.windows.net –P password –b 200 –F 200000 –h”TABLOCK”
    
    Le paramètre in indique la copie des données dans base de données SQL Microsoft Azure. Le paramètre -b indique le nombre de lignes par lot de données importées. Les paramètres L lastrow et F firstrow permettent de spécifier quelle partie du fichier de données est traitée par chaque exécution.

  5. Supprimer les optimisations du schéma.

    Restaurez tous les éléments du schéma supprimés pour optimiser les insertions en bloc. Par exemple, activez tous les index non cluster, les déclencheurs ou les contraintes qui ont été désactivés à l'étape 3.

[Top]

Afficher:
© 2015 Microsoft