Partager via


Configurer Azure SQL Database dans une 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 activité de copie, accédez respectivement aux sections suivantes.

Généralités

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

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 Nouvelle.
  • type de connexion: sélectionnez Azure SQL Database.
  • Table: sélectionnez la table dans votre base de données dans la liste déroulante. Vous pouvez également consulter Modifier pour saisir 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 tableau.

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

  • Utiliser la requête: vous pouvez choisir la table , la requête ou la 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écifiez la requête SQL personnalisée pour lire les données. Par exemple, select * from MyTable. Ou sélectionnez 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: utilisez 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 manuellement le nom de la procédure stockée en cochant 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 nom ou valeur. Les noms et la casse des paramètres doivent correspondre aux noms et à la casse des paramètres de la procédure stockée.

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

  • délai d’expiration de requête (minutes): spécifiez le délai d’attente pour l’exécution de la commande de requête, la valeur par défaut est 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 de délai d’expiration de la requête.

  • niveau d’isolation: spécifie le comportement de verrouillage des transactions pour la source SQL. Les valeurs autorisées sont : None, ReadCommitted, ReadUncommitted, RepeatableRead, Serializable ou Snapshot. S’il n’est pas spécifié, aucun niveau d’isolation est utilisé. Pour plus d’informations, reportez-vous à Énumération IsolationLevel.

    Capture d’écran montrant les paramètres de niveau d’isolation.

  • Option de partition: Spécifiez les options de partitionnement des données utilisées pour charger des données à partir d'Azure SQL Database. Les valeurs autorisées sont les suivantes : Aucun (valeur par défaut), partitions physiques de la tableet 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 base de données Azure SQL Database est contrôlé par le paramètre copie parallèle sur l’activité de copie.

    Capture d’écran montrant les paramètres d’option de partition.

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

    • partitions physiques de la 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 la fonction parallèle activée, 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 est détecté automatiquement et utilisé comme colonne de partition.
      • limite supérieure de partition: spécifiez la valeur maximale de la colonne de partition pour le fractionnement de la plage de partitions. Cette valeur est utilisée pour décider de la progression 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 partition: spécifiez la valeur minimale de la colonne de partition pour le fractionnement de la plage de partitions. Cette valeur est utilisée pour décider de la progression 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 d’autres colonnes de données pour stocker le chemin d’accès relatif ou la valeur statique des fichiers sources. 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 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 Nouvelle.
  • type de connexion: sélectionnez Azure SQL Database.
  • Table: sélectionnez la table dans votre base de données dans la liste déroulante. Vous pouvez aussi cocher 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 provient d’un magasin de données basé sur des fichiers. Vous pouvez choisir Insérer, Upsert ou Procédure 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: spécifiez s’il faut utiliser une table temporaire globale ou une table physique comme table intermédiaire pour upsert. Par défaut, le service utilise une table temporaire globale comme table intermédiaire et cette case à cocher est cochée.

        Capture d’écran montrant l’option Utiliser TempDB.

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

        Remarque

        Vous devez disposer de l’autorisation de création et de suppression de tables. Par défaut, une table intermédiaire partage le même schéma qu’une table de destination.

        Capture d’écran montrant que vous ne sélectionnez pas Utiliser TempDB.

      • Colonnes clés: spécifiez les noms de colonnes pour l’identification de ligne unique. Une seule clé ou une série de clés peut être utilisée. Si elle n’est pas spécifiée, la clé primaire est utilisée.

    • procédure stockée: utilisez 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 quand vous cochez la case Modifier pour lire des 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 nom ou valeur. Les noms et la casse des paramètres doivent correspondre aux noms et à la casse des paramètres de la procédure stockée.

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

  • Verrouillage de table d’insertion en bloc : choisissez Oui ou Non. Utilisez ce paramètre pour améliorer les performances de copie pendant une opération d’insertion en bloc sur une table sans index de plusieurs clients. Pour plus d’informations, consultez BULK INSERT (Transact-SQL).

  • Option de table : spécifie s’il faut créer automatiquement la table de destination si la table n’existe pas d’après le 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 dans chaque exécution. Vous pouvez utiliser cette propriété pour nettoyer les données préchargées.

  • Délai d’expiration du lot d’écritures : spécifiez le temps pendant lequel il faut attendre que l’opération d’insertion par lot se termine avant que ce délai n’expire. La valeur autorisée est un intervalle de temps. La valeur par défaut est « 00:30:00 » (30 minutes).

  • Taille de lot d’écritures : spécifiez le nombre de lignes par lot à insérer dans la table SQL. La valeur autorisée est entier (nombre de lignes). Par défaut, le service détermine dynamiquement la taille de lot appropriée en fonction de la taille de ligne.

  • Nombre maximal de connexions simultanées: spécifiez la limite supérieure des 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 vous êtes concerné par ce comportement, cochez cette case.

Cartographie

Pour la configuration de l’onglet Mappage, si vous n’appliquez pas Azure SQL Database avec une création de table automatique comme destination, accédez à Mappage.

Si vous appliquez Azure SQL Database 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 ID colonne dans la source est int, et vous pouvez le modifier en type float lors du mappage à 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’Azure SQL Database

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

Lorsque vous activez la copie partitionnée, l’activité de copie exécute des requêtes parallèles sur votre source Azure SQL Database pour charger des données par partitions. Le degré parallèle est contrôlé par le Degré de parallélisme de copie dans l’onglet Paramètres de l’activité de copie. Par exemple, si vous définissez 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 et des paramètres de votre partition spécifiée, et chaque requête récupère une partie des données de votre base de données Azure SQL Database.

Vous êtes suggéré d’activer la copie parallèle avec le partitionnement des données, en particulier lorsque vous chargez une grande quantité de données à partir de votre base de données Azure SQL Database. Voici les configurations suggérées pour différents scénarios. Lors de la copie de données dans un magasin de données basé sur des fichiers, il est recommandé d’écrire dans un dossier sous la forme de plusieurs fichiers (spécifier uniquement le nom du dossier), auquel cas les performances sont meilleures que l’écriture dans un seul fichier.

Scénario Paramètres suggérés
Chargement complet à partir d’une table de grande taille, 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 partitions.

Pour vérifier si votre table a ou non une partition physique, vous pouvez vous reporter à cette requête.
Charge complète à partir d'une table volumineuse, sans partitions physiques, mais avec une colonne de type entier ou datetime pour le partitionnement des données. Options de partition: Partition de plage dynamique.
colonne de partition (facultatif) : indiquez la colonne utilisée pour partitionner les données. S’il n’est pas spécifié, l’index ou la colonne de clé primaire est utilisé.
Partition limite supérieure et partition limite inférieure (facultatif) : spécifiez si vous souhaitez déterminer la progression de la partition. Il ne s’agit pas de filtrer les lignes de la table, toutes les lignes de la table seront partitionnée et copiées. Si ce n’est pas spécifié, les activités de copie détectent automatiquement les valeurs.

Par exemple, si votre colonne de partition « ID » a des valeurs comprises entre 1 et 100, et que vous définissez la limite inférieure sur 20 et la limite supérieure comme 80, avec une copie parallèle en tant que 4, le service récupère les données par 4 partitions - ID dans la plage <=20, [21, 50], [51, 80] et >=81, respectivement.
Chargez une grande quantité de données à l’aide d’une requête personnalisée, sans partitions physiques, avec un entier ou une colonne date/datetime 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.
Partition limite supérieure et partition limite inférieure (facultatif) : spécifiez si vous souhaitez déterminer la progression de la partition. Ce n’est pas pour filtrer les lignes de la table, toutes les lignes du résultat de la requête sont partitionnés et copiées. Si ce n’est pas spécifié, l’activité de copie détecte automatiquement la valeur.

Par exemple, si votre colonne de partition « ID » a des valeurs comprises entre 1 et 100, et que vous définissez la limite inférieure sur 20 et la limite supérieure comme 80, avec une copie parallèle en tant que 4, le service récupère les données de 4 partitions - ID dans la plage <=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>
• Interroger 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

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

  • Choisissez une colonne distincte comme colonne de partition (comme la clé primaire ou une clé unique) pour éviter l’asymétrie des données.
  • Si la table a 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 la 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 verrez « HasPartition » indiquer « oui » de la manière suivante.

résultat de la requête Sql.

Résumé du tableau

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 stockage de données Type de magasin de données. Externe Oui /
Connexion Votre connexion au magasin de données source. <votre connexion> Oui connexion
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 Requête SQL personnalisée pour lire les données. • Aucun
• Requête
• Procédure stockée
Non

• sqlReaderQuery
• sqlReaderStoredProcedureName, storedProcedureParameters
Délai d’expiration de la requête Le délai d’expiration de l’exécution de la commande de requête est de 120 minutes par défaut. intervalle de temps Non queryTimeout
niveau d’isolation Spécifie le comportement de verrouillage des transactions pour la source SQL. • Aucun
• ReadCommitted
• ReadUncommitted
• RepeatableRead
•Sérialisable
• Instantané
Non niveau d'isolement
Option de partition 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 d’autres colonnes de données pour stocker le chemin d’accès relatif ou la valeur statique des fichiers sources. L'expression est prise en charge pour ce dernier. •Nom
•Valeur
Non additionalColumns :
• nom
•valeur

Destination

Nom Description Valeur Obligatoire Propriété de script JSON
Type de magasin de données Type de magasin de données. Externe Oui /
Connexion Votre connexion au magasin de données de destination. <votre connexion > Oui connexion
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 des fichiers à partir d’un magasin de données basé sur des fichiers. •Insérer
• 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 pendant une opération d’insertion en bloc sur une table sans index de plusieurs clients. Oui ou Non Non sqlWriterUseTableLock :
vrai ou faux
Option de table Spécifie s’il faut créer automatiquement la table de destination si elle n’existe pas en fonction du schéma source. • Aucun
• Créer automatiquement une table
Non tableOption :
• autoCreate
Script de pré-copie Script pour l’activité de copie à exécuter avant d’écrire des données dans une table de destination dans chaque exécution. Vous pouvez utiliser cette propriété pour nettoyer les données préchargées. <script de pré-copie>
(chaîne)
Non preCopyScript
Délai d’expiration du lot d’écritures Durée d’attente de la fin de l’opération d’insertion par lot avant dépassement du délai d’expiration. La valeur autorisée est un intervalle de temps. La valeur par défaut est « 00:30:00 » (30 minutes). intervalle de temps Non writeBatchTimeout
Écrire la taille du lot Nombre de lignes à insérer dans la table SQL par lot. Par défaut, le service détermine dynamiquement la taille de lot appropriée en fonction de la taille de ligne. <nombre de lignes>
(entier)
Non writeBatchSize
nombre maximal de connexions simultanées 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 des 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 vous êtes concerné par ce comportement, cochez cette case. sélectionner ou désélectionner Non disableMetricsCollection :
vrai ou faux