Partager via


Configurer Azure SQL Database dans l’activité de copie

Cet article explique comment utiliser l'activité de copie dans le pipeline de données pour copier des données depuis et vers Azure SQL Database.

Configuration prise en charge

Pour la configuration de chaque onglet sous l’activité de copie, accédez respectivement aux sections suivantes.

Général

Reportez-vous aux instructions relatives aux paramètres Général pour configurer l’onglet Paramètres Général .

Source

Les propriétés suivantes sont prises en charge pour Azure SQL Database sous l’onglet Source d’une activité de copie.

Capture d'écran montrant l'onglet source et la liste des propriétés.

Les propriétés suivantes sont requises :

  • Type de magasin de données : sélectionnez Externe.
  • Connexion : sélectionnez une connexion Azure SQL Database dans la liste des connexions. Si la connexion n’existe pas, créez une connexion Azure SQL Database en sélectionnant Nouveau.
  • Type de connexion : sélectionnez Azure SQL Database.
  • Table : sélectionnez la table dans votre base de données dans la liste déroulante. Ou cochez Modifier pour entrer manuellement le nom de votre table.
  • Aperçu des données : sélectionnez Aperçu des données pour afficher un aperçu des données dans votre table.

Sous Avancé, vous pouvez spécifier les champs suivants :

  • Utiliser une requête : vous pouvez choisir Table, Requête ou Procédure stockée. La liste suivante décrit la configuration de chaque paramètre :

    • Table : lisez les données de la table que vous avez spécifiée dans Table si vous sélectionnez ce bouton.

    • Requête : spécifie la requête SQL personnalisée pour lire les données. par exemple select * from MyTable. Vous pouvez également sélectionner l’icône de crayon à modifier dans l’éditeur de code.

      Capture d'écran montrant le choix de la requête.

    • Procédure stockée : Nom de la procédure stockée qui lit les données de la table source. La dernière instruction SQL doit être une instruction SELECT dans la procédure stockée.

      • Nom de la procédure stockée : sélectionnez la procédure stockée ou spécifiez le nom de la procédure stockée manuellement lorsque vous cochez la case Modifier pour lire les données de la table source.

      • Paramètres de procédure stockée : spécifiez des valeurs pour les paramètres de procédure stockée. Les valeurs autorisées sont des paires de noms ou de valeurs. Les noms et la casse des paramètres doivent correspondre aux noms et à la casse des paramètres de procédure stockée.

        Capture d'écran montrant les paramètres de la procédure stockée.

  • Délai d’expiration de la requête (minutes) : spécifiez le délai d’expiration pour l’exécution de la commande de requête, la valeur par défaut étant de 120 minutes. Si un paramètre est défini pour cette propriété, les valeurs autorisées sont un intervalle de temps, par exemple « 02:00:00 » (120 minutes).

    Capture d'écran montrant les paramètres du délai de requête.

  • Niveau d’isolation : Spécifie le comportement de verrouillage des transactions pour la source SQL. Les valeurs autorisées sont les suivantes : Aucun, ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, ou Instantané. S’il n’est pas spécifié, aucun niveau d’isolation est utilisé. Pour plus d’informations, reportez-vous à IsolationLevel Enum.

    Capture d'écran montrant les paramètres du niveau d'isolation.

  • Option de partition : spécifie les options de partitionnement des données utilisées pour charger des données à partir d’Azure SQL Database. Les valeurs autorisées sont : Aucune (valeur par défaut), Partitions physiques de la table et Plage dynamique. Lorsqu’une option de partition est activée (autrement dit, pas Aucun), le degré de parallélisme pour charger simultanément des données à partir d’une instance Azure SQL Database est contrôlé par le paramètre copie de parallèle sur l’activité de copie.

    Capture d'écran montrant les paramètres de l'option Partition.

    • Aucun : choisissez ce paramètre pour ne pas utiliser de partition.

    • Partitions physiques de table : lorsque vous utilisez une partition physique, la colonne de partition et le mécanisme sont automatiquement déterminés en fonction de votre définition de table physique.

    • Plage dynamique : lorsque vous utilisez une requête avec le parallèle activé, le paramètre de partition de plage(?DfDynamicRangePartitionCondition) est nécessaire. Exemple de requête :SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition.

      • Nom de la colonne de partition : Indiquez le nom de la colonne source de type entier ou date/heure (int, smallint, bigint, date, smalldatetime, datetime, datetime2, ou datetimeoffset) qui est utilisée par le partitionnement de plage pour la copie parallèle. S’il n’est pas spécifié, l’index ou la clé primaire de la table seront automatiquement détectés et utilisés en tant que colonne de partition.
      • Limite supérieure de la partition : Valeur maximale de la colonne de partition pour le fractionnement de la plage de partition. Cette valeur est utilisée pour décider du stride de la partition, et non pour filtrer les lignes de la table. Toutes les lignes de la table ou du résultat de la requête sont partitionnées et copiées.
      • Limite inférieure de la partition : Valeur minimum de la colonne de partition pour le fractionnement de la plage de partition. Cette valeur est utilisée pour décider du stride de la partition, et non pour filtrer les lignes de la table. Toutes les lignes de la table ou du résultat de la requête sont partitionnées et copiées.
  • Colonnes supplémentaires: Ajoutez plus de colonnes de données pour stocker le chemin relatif ou la valeur statique des fichiers source. L’expression est prise en charge pour ce dernier. Pour plus d’informations, accédez à Ajouter des colonnes supplémentaires pendant la copie.

Destination

Les propriétés suivantes sont prises en charge pour Azure SQL Database sous l’onglet Destination d’une activité de copie.

Capture d'écran montrant l'onglet de destination.

Les propriétés suivantes sont requises :

  • Type de magasin de données : sélectionnez Externe.
  • Connexion : sélectionnez une connexion Azure SQL Database dans la liste des connexions. Si la connexion n’existe pas, créez une connexion Azure SQL Database en sélectionnant Nouveau.
  • Type de connexion : sélectionnez Azure SQL Database.
  • Table : sélectionnez la table dans votre base de données dans la liste déroulante. Ou cochez Modifier pour entrer manuellement le nom de votre table.
  • Aperçu des données : sélectionnez Aperçu des données pour afficher un aperçu des données dans votre table.

Sous Avancé, vous pouvez spécifier les champs suivants :

  • Comportement d’écriture :Définit le comportement d’écriture lorsque la source est constituée de fichiers d’une banque de données basée sur un fichier. Vous pouvez choisir Insérer, Upsert ou Stockée.

    Capture d’écran de l’onglet Comportement d’écriture.

    • Insérer : choisissez cette option si vos données sources ont des insertions.

    • Upsert : choisissez cette option si vos données sources ont à la fois des insertions et des mises à jour.

      • Utiliser TempDB : Indique si vous voulez utiliser une table temporaire globale ou une table physique en tant que table temporaire pour faire un upsert. Par défaut, le service utilise la table temporaire globale comme table intermédiaire et cette case à cocher est cochée.

        Capture d'écran montrant la sélection de Utiliser TempDB.

      • Sélectionner un schéma de base de données utilisateur : lorsque la case à cocher Utiliser TempDB n’est pas activée, spécifiez le schéma intermédiaire pour la création d’une table intermédiaire si une table physique est utilisée.

        Notes

        Vous devez avoir une autorisation pour créer et supprimer une table. Par défaut, une table intermédiaire partage le même schéma qu'une table de destination.

        Capture d'écran montrant la non sélection de Utiliser TempDB.

      • Colonnes clés : Spécifiez les noms de colonne à des fins d’identification unique des lignes. Vous pouvez utiliser une seule clé ou une série de clés. Si la valeur n’est pas spécifiée, la clé primaire est utilisée.

    • Procédure stockée : utiliser la procédure stockée qui définit comment appliquer des données sources dans une table cible. Cette procédure stockée est appelée par lot.

      • Nom de la procédure stockée : sélectionnez la procédure stockée ou spécifiez le nom de la procédure stockée manuellement lorsque vous cochez la case Modifier pour lire les données de la table source.

      • Paramètres de procédure stockée : spécifiez des valeurs pour les paramètres de procédure stockée. Les valeurs autorisées sont des paires de noms ou de valeurs. Les noms et la casse des paramètres doivent correspondre aux noms et à la casse des paramètres de procédure stockée.

        Capture d'écran montrant les paramètres de la procédure stockée.

  • Insérer en bloc un verrou de table : choisissez Oui ou Non. Utilisez ce paramètre pour améliorer les performances de copie lors de l’opération d’insertion en bloc dans la table sans index à partir de plusieurs clients. Pour plus d’informations, accédez à BULK INSERT (Transact-SQL)

  • Option table : spécifie s’il faut créer automatiquement la table de destination si la table n’existe pas en fonction du schéma source. Choisissez Aucun ou Créer automatiquement une table. La création automatique de table n’est pas prise en charge lorsque la destination spécifie une procédure stockée.

  • Script de pré-copie : spécifiez un script pour l’activité de copie à exécuter avant d’écrire des données dans une table de destination à chaque exécution. Vous pouvez utiliser cette propriété pour nettoyer des données préchargées.

  • Délai d'attente du lot d'écriture  : Temps d’attente pour que l’opération d’insertion par lot soit terminée avant d’expirer. La valeur autorisée est timespan. La valeur par défaut est 00:30:00 (30 minutes).

  • Taille de lot d’écriture : spécifiez le nombre de lignes à insérer dans la table SQL par lot. La valeur autorisée est integer (nombre de lignes). Par défaut, le service détermine de façon dynamique la taille de lot appropriée selon la taille de ligne.

  • Nombre maximal de connexions simultanées : spécifie la limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées.

  • Désactiver l’analytique des métriques de performances : ce paramètre est utilisé pour collecter des métriques, telles que DTU, DWU, RU, etc., pour l’optimisation des performances de copie et les recommandations. Si ce comportement vous préoccupe, cochez cette case.

Mappage

Pour la configuration de la tabulation Mappage, si vous n'appliquez pas la base de données Azure SQL avec la table de création automatique comme destination, allez sur Mappage.

Si vous appliquez la base de données Azure SQL avec la table de création automatique comme destination, à l'exception de la configuration dans Mappage, vous pouvez modifier le type de vos colonnes de destination. Après avoir sélectionné Importer des schémas, vous pouvez spécifier le type de colonne dans votre destination.

Par exemple, le type de la colonne ID dans la source est int. Vous pouvez le changer par le type float lors du mappage vers la colonne de destination.

Capture d’écran du type de colonne de destination de mappage.

Paramètres

Pour la configuration de l’onglet Paramètres, accédez à Configurer vos autres paramètres sous l’onglet Paramètres.

Copie parallèle à partir d’une base de données Azure SQL

Le connecteur Azure SQL Database dans l’activité de copie propose un partitionnement de données intégré pour copier des données en parallèle. Vous trouverez des options de partitionnement de données dans l’onglet Source de l’activité de copie.

Lorsque vous activez la copie partitionnée, l’activité de copie exécute des requêtes en parallèle sur votre source Azure SQL Database pour charger des données par partitions. Le degré de parallélisme est contrôlé par le Degré de parallélisme de copie sous l’onglet des paramètres de l’activité Copy. Par exemple, si vous définissez le Degré de parallélisme de copie sur quatre, le service génère et exécute simultanément quatre requêtes en fonction de l’option de partition et des paramètres que vous avez spécifiés, et chaque requête récupère une partie des données à partir de votre base de données Azure SQL.

Il vous est recommandé d’activer la copie en parallèle avec partitionnement des données notamment lorsque vous chargez une grande quantité de données à partir de votre instance Azure SQL Database. Voici quelques suggestions de configurations pour différents scénarios. Lors de la copie de données dans un magasin de données basé sur un fichier, il est recommandé d’écrire les données dans un dossier sous la forme de plusieurs fichiers (spécifiez uniquement le nom du dossier). Les performances seront meilleures qu’avec l’écriture de données dans un seul fichier.

Scénario Paramètres suggérés
Chargement complet à partir d’une table volumineuse, avec des partitions physiques. Option de partition : Partitions physiques de la table.

Pendant l’exécution, le service détecte automatiquement les partitions physiques et copie les données par partition.

Pour vérifier si votre table possède, ou non, une partition physique, vous pouvez vous reporter à cette requête.
Chargement complet d’une table volumineuse, sans partitions physiques, avec une colonne d’entiers ou DateHeure pour le partitionnement des données. Options de partition : Partition dynamique par spécification de plages de valeurs.
Colonne de partition (facultatif) : Spécifiez la colonne utilisée pour partitionner les données. Si la valeur n’est pas spécifiée, la colonne de l’index ou de la clé primaire est utilisée.
Limite supérieure de partition et limite inférieure de partition (facultatif) : Spécifiez si vous souhaitez déterminer le stride de la partition. Cela ne permet pas de filtrer les lignes de la table ; toutes les lignes de la table sont partitionnées et copiées. Si les valeurs ne sont pas spécifiées, les activités de copie les détectent automatiquement.

Par exemple, si les valeurs de la colonne de partition « ID » sont comprises entre 1 et 100, et que vous définissez la limite inférieure à 20 et la limite supérieure à 80, avec la copie parallèle à 4, le service récupère des données en fonction de 4 partitions, (ID des plages <=20, [21, 50], [51, 80] et >=81, respectivement).
Chargement d’une grande quantité de données à l’aide d’une requête personnalisée, sans partitions physiques, et avec une colonne d’entiers ou de date/DateHeure pour le partitionnement des données. Options de partition : Partition dynamique par spécification de plages de valeurs.
Requête: SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>.
Colonne de partition : Spécifiez la colonne utilisée pour partitionner les données.
Limite supérieure de partition et limite inférieure de partition (facultatif) : Spécifiez si vous souhaitez déterminer le stride de la partition. Cela ne permet pas de filtrer les lignes de la table ; toutes les lignes du résultat de la requête sont partitionnées et copiées. Si la valeur n’est pas spécifiée, l’activité de copie la détecte automatiquement.

Par exemple, si les valeurs de la colonne de partition « ID » sont comprises entre 1 et 100, et que vous définissez la limite inférieure à 20 et la limite supérieure à 80, avec la copie parallèle à 4, le service récupère des données en fonction de 4 partitions (ID des plages <=20, [21, 50], [51, 80] et >=81, respectivement).

Voici d’autres exemples de requêtes pour différents scénarios :
• Interroger l’ensemble de la table :
SELECT * FROM <TableName> WHERE ?DfDynamicRangePartitionCondition
• Interroger une table avec une sélection de colonnes et des filtres de la clause WHERE supplémentaires :
SELECT <column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Effectuer une requête avec des sous-requêtes :
SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?DfDynamicRangePartitionCondition AND <your_additional_where_clause>
• Effectuer une requête avec une partition dans une sous-requête :
SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?DfDynamicRangePartitionCondition) AS T

Meilleures pratiques pour charger des données avec l’option de partition :

  • Choisissez une colonne distinctive comme colonne de partition (p. ex. : clé primaire ou clé unique) pour éviter l’asymétrie des données.
  • Si la table possède une partition intégrée, utilisez l’option de partition Partitions physiques de la table pour obtenir de meilleures performances.

Exemple de requête pour vérifier une partition physique

SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, pf.name AS PartitionFunctionName, c.name AS ColumnName, iif(pf.name is null, 'no', 'yes') AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id 
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id 
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id 
LEFT JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id 
LEFT JOIN sys.partition_functions pf ON pf.function_id = ps.function_id 
WHERE s.name='[your schema]' AND t.name = '[your table name]'

Si la table a une partition physique, vous voyez « HasPartition » avec la valeur « yes » (oui) comme suit.

Résultat d’une requête SQL.

Résumé de la table

Les tableaux suivants contiennent plus d’informations sur l’activité de copie dans Azure. SQL Database.

Source

Nom Description Valeur Obligatoire Propriété de script JSON
Type de banque de données Votre type de magasin de données. Externe Oui /
Connection Votre connexion au magasin de données source. <votre connexion> Oui connection
Type de connexion Votre type de connexion. Sélectionnez Azure SQL Database. Azure SQL Database Oui /
Table Votre table de données source. <nom de votre table de destination> Oui schéma
table
Utiliser la requête La requête SQL personnalisée pour lire les données. • Aucun
• Requête
• Procédure stockée
Non

• sqlReaderQuery
• sqlReaderStoredProcedureName, storedProcedureParameters
Délai de requête Le délai d’expiration pour l’exécution de la commande de requête ( par défaut est de 120 minutes). intervalle de temps Non queryTimeout
Niveau d’isolation Spécifie le comportement de verrouillage des transactions pour la source SQL. • Aucun
• ReadCommitted
• ReadUncommitted
• RepeatableRead
• Serializable
• Instantané
Non isolationLevel
Option de partition Les options de partitionnement des données utilisées pour charger des données à partir d’Azure SQL Database. • Aucun
• Partitions physiques de la table
• Plage dynamique
Non partitionOption :
• PhysicalPartitionsOfTable
• DynamicRange
Colonnes supplémentaires Ajoutez plus de colonnes de données au chemin relatif ou à la valeur statique des fichiers source du magasin. L’expression est prise en charge pour ce dernier. • Name
• Valeur
Non additionalColumns :
• nom
• valeur

Destination

Nom Description Valeur Obligatoire Propriété de script JSON
Type de banque de données Votre type de magasin de données. Externe Oui /
Connection Votre connexion au magasin de données de destination. <votre connexion > Oui connection
Type de connexion Votre type de connexion. Sélectionnez Azure SQL Database. Azure SQL Database Oui /
Table Votre table de données de destination. <nom de votre table de destination> Oui schéma
table
Comportement d’écriture Définit le comportement d’écriture lorsque la source est constituée de fichiers d’une banque de données basée sur un fichier. • Insert
• Upsert
• Procédure stockée
Non writeBehavior :
• insert
• upsert
• sqlWriterStoredProcedureName, sqlWriterTableType, storedProcedureParameters
Verrou de table d’insertion en bloc Utilisez ce paramètre pour améliorer les performances de copie lors de l’opération d’insertion en bloc dans la table sans index à partir de plusieurs clients. Oui ou Non Non sqlWriterUseTableLock :
True ou False
Option de table Spécifie s’il faut créer automatiquement la table de destination si la table n’existe pas en fonction du schéma source. • Aucun
• Auto créer la table
Non tableOption :
• autoCreate
Script de pré-copie Un script pour l’activité de copie à exécuter avant d’écrire des données dans une table de destination à chaque exécution. Vous pouvez utiliser cette propriété pour nettoyer des données préchargées. <script de pré-copie>
(string)
Non preCopyScript
Délai d’expiration du lot d’écriture Temps d’attente pour que l’opération d’insertion par lot soit terminée avant d’expirer. La valeur autorisée est timespan. La valeur par défaut est 00:30:00 (30 minutes). intervalle de temps Non writeBatchTimeout
Taille de lot d’écriture Nombre de lignes à insérer dans la table SQL par lot. Par défaut, le service détermine de façon dynamique la taille de lot appropriée selon la taille de ligne. <Nombre de rangées>
(entier)
Non writeBatchSize
Connexions simultanées maximales La limite supérieure de connexions simultanées établies au magasin de données pendant l’exécution de l’activité. Spécifiez une valeur uniquement lorsque vous souhaitez limiter les connexions simultanées. <limite supérieure de connexions simultanées>
(entier)
Non maxConcurrentConnections
Désactiver l’analytique des métriques de performances Ce paramètre est utilisé pour collecter des métriques, telles que DTU, DWU, RU, etc., pour l’optimisation des performances de copie et les recommandations. Si ce comportement vous préoccupe, cochez cette case. sélectionner ou désélectionner Non disableMetricsCollection :
True ou False