Tous les produits
Search
Centre de documentation

Data Transmission Service:Synchroniser une base de données SQL Server auto-gérée vers AnalyticDB for PostgreSQL

Dernière mise à jour :Aug 10, 2026

Utilisez Data Transmission Service (DTS) pour synchroniser en continu les données d'une base de données SQL Server auto-gérée hébergée sur Elastic Compute Service (ECS) vers une instance AnalyticDB for PostgreSQL. DTS prend en charge la synchronisation de schéma, la synchronisation complète des données et la synchronisation incrémentielle des données au sein d'une seule tâche.

Cas où il ne faut pas utiliser DTS

Si l'instance source ApsaraDB RDS for SQL Server remplit l'une des conditions suivantes, utilisez plutôt la fonctionnalité de sauvegarde d'ApsaraDB RDS for SQL Server. Pour plus de détails, consultez Migrer des données d'une base de données auto-gérée vers une instance ApsaraDB RDS for SQL Server.

Condition Seuil
Nombre de bases de données Plus de 10
Intervalle de sauvegarde des journaux (base de données unique) Moins d'1 heure
Instructions DDL par heure (base de données unique) Plus de 100
Taux d'écriture des journaux (base de données unique) 20 Mo/s ou plus
Tables nécessitant Change Data Capture (CDC) Plus de 1 000
Types de tables présents Tables heap, tables sans clés primaires, tables compressées ou tables avec colonnes calculées

Exécutez les instructions SQL suivantes pour vérifier si la base de données source contient des types de tables non pris en charge :

  1. Vérifiez la présence de tables heap :

    SELECT s.name AS schema_name, t.name AS table_name
    FROM sys.schemas s
    INNER JOIN sys.tables t ON s.schema_id = t.schema_id
      AND t.type = 'U'
      AND s.name NOT IN ('cdc', 'sys')
      AND t.name NOT IN ('systranschemas')
      AND t.object_id IN (SELECT object_id FROM sys.indexes WHERE index_id = 0);
  2. Vérifiez la présence de tables sans clés primaires :

    SELECT s.name AS schema_name, t.name AS table_name
    FROM sys.schemas s
    INNER JOIN sys.tables t ON s.schema_id = t.schema_id
      AND t.type = 'U'
      AND s.name NOT IN ('cdc', 'sys')
      AND t.name NOT IN ('systranschemas')
      AND t.object_id NOT IN (SELECT parent_object_id FROM sys.objects WHERE type = 'PK');
  3. Vérifiez si les colonnes de clé primaire ne figurent pas dans les colonnes d'index clusterisé :

    SELECT s.name AS schema_name, t.name AS table_name
    FROM sys.schemas s
    INNER JOIN sys.tables t ON s.schema_id = t.schema_id
    WHERE t.type = 'U'
      AND s.name NOT IN ('cdc', 'sys')
      AND t.name NOT IN ('systranschemas')
      AND t.object_id IN (
        SELECT pk_columns.object_id
        FROM (
          SELECT sic.object_id, sic.column_id
          FROM sys.index_columns sic, sys.indexes sis
          WHERE sic.object_id = sis.object_id
            AND sic.index_id = sis.index_id
            AND sis.is_primary_key = 'true'
        ) pk_columns
        LEFT JOIN (
          SELECT sic.object_id, sic.column_id
          FROM sys.index_columns sic, sys.indexes sis
          WHERE sic.object_id = sis.object_id
            AND sic.index_id = sis.index_id
            AND sis.index_id = 1
        ) cluster_columns
        ON pk_columns.object_id = cluster_columns.object_id
        WHERE pk_columns.column_id != cluster_columns.column_id
      );
  4. Vérifiez la présence de tables compressées :

    SELECT s.name AS schema_name, t.name AS table_name
    FROM sys.objects t, sys.schemas s, sys.partitions p
    WHERE s.schema_id = t.schema_id
      AND t.type = 'U'
      AND s.name NOT IN ('cdc', 'sys')
      AND t.name NOT IN ('systranschemas')
      AND t.object_id = p.object_id
      AND p.data_compression != 0;
  5. Vérifiez la présence de tables avec des colonnes calculées :

    SELECT s.name AS schema_name, t.name AS table_name
    FROM sys.schemas s
    INNER JOIN sys.tables t ON s.schema_id = t.schema_id
      AND t.type = 'U'
      AND s.name NOT IN ('cdc', 'sys')
      AND t.name NOT IN ('systranschemas')
      AND t.object_id IN (SELECT object_id FROM sys.columns WHERE is_computed = 1);

Si une requête renvoie des lignes, ces tables nécessitent un traitement particulier ou peuvent affecter votre choix de mode de synchronisation incrémentielle.

Prérequis

Avant de commencer, assurez-vous que :

  • La version de SQL Server est prise en charge par DTS. Pour connaître les versions prises en charge, consultez Présentation des scénarios de synchronisation de données.

  • L'instance AnalyticDB for PostgreSQL de destination est créée. Pour obtenir des instructions, consultez Créer une instance.

  • L'espace de stockage disponible de l'instance de destination est supérieur à la taille totale des données de la base de données source.

Opérations prises en charge

DML : INSERT, UPDATE, DELETE

DDL :

Instruction Notes
CREATE TABLE Les tables partitionnées et les tables contenant des fonctions ne sont pas synchronisées.
ADD COLUMN, DROP COLUMN
DROP TABLE
CREATE INDEX, DROP INDEX

DTS ne synchronise pas les opérations DDL contenant des types définis par l'utilisateur ni les opérations DDL transactionnelles.

Limites

Limites de la base de données source

  • Les tables doivent disposer de contraintes PRIMARY KEY ou UNIQUE avec tous les champs uniques ; sinon, la base de données de destination peut contenir des enregistrements en double.

  • Lorsque vous sélectionnez des tables comme objets de synchronisation et que vous les modifiez dans la destination, une seule tâche peut synchroniser jusqu'à 5 000 tables. Pour un nombre de tables supérieur, configurez plusieurs tâches ou synchronisez la base de données entière.

  • Une seule tâche peut synchroniser jusqu'à 10 bases de données. Pour plus de 10 bases de données, configurez plusieurs tâches.

  • Exigences de rétention des journaux de transactions :

    • Synchronisation incrémentielle uniquement : les journaux doivent être conservés pendant plus de 24 heures.

    • Synchronisation complète + incrémentielle : les journaux doivent être conservés pendant au moins 7 jours.

    • Une fois la synchronisation complète terminée, la période de rétention peut être réduite à plus de 24 heures.

  • Si CDC est activé pour les tables à synchroniser :

    • Le champ srvname dans la vue sys.sysservers doit correspondre à la valeur de retour de la fonction SERVERPROPERTY.

    • Pour les bases de données SQL Server auto-gérées, le propriétaire de la base de données doit être l'utilisateur sa.

    • Pour les bases de données ApsaraDB RDS for SQL Server, le propriétaire de la base de données doit être l'utilisateur sqlsa.

    • L'édition Enterprise nécessite SQL Server 2008 ou une version ultérieure.

    • L'édition Standard nécessite SQL Server 2016 SP1 ou une version ultérieure.

    • SQL Server 2017 (édition Standard ou Enterprise) n'est pas recommandé ; effectuez une mise à jour vers une version ultérieure.

Autres limites

  • DTS prend en charge la synchronisation initiale du schéma pour les schémas, tables, vues, fonctions et procédures. Les bases de données source et de destination sont hétérogènes — les types de données n'ont pas de correspondance un-à-un. Évaluez l'impact de la conversion des types de données avant la synchronisation. Pour les mappages de types, consultez Mappages de types de données pour la synchronisation de schéma.

  • DTS ne synchronise pas les schémas des assemblys, des service brokers, des index full-text, des catalogues full-text, des schémas distribués, des fonctions distribuées, des procédures stockées CLR, des fonctions scalaires CLR, des fonctions table-valued CLR, des tables internes, des systèmes ou des fonctions d'agrégation.

  • DTS ne synchronise pas les données des types suivants : TIMESTAMP, CURSOR, ROWVERSION, HIERACHYID, SQL_VARIANT, SPATIAL GEOMETRY, SPATIAL GEOGRAPHY ou TABLE.

  • DTS ne synchronise pas les tables avec des colonnes calculées.

  • Si CDC est activé pour plus de 1 000 tables dans une seule tâche, la pré-vérification échoue.

  • Le réindexage n'est pas autorisé pendant la synchronisation incrémentielle ; cela pourrait entraîner l'échec de la tâche ou une perte de données.

  • Pendant la synchronisation complète, les opérations INSERT simultanées provoquent une fragmentation dans les tables de destination. Après la synchronisation, l'espace de table de destination sera plus grand que celui de la source.

  • Écrivez des données dans la base de données de destination uniquement via DTS pendant la synchronisation. L'utilisation d'autres outils pour écrire des données simultanément peut entraîner une perte de données ou une incohérence.

Comportement de la synchronisation de schéma

  • DTS synchronise les clés étrangères de la source vers la destination.

  • Pendant la synchronisation complète et incrémentielle, DTS désactive temporairement la vérification des contraintes de clé étrangère et les opérations en cascade au niveau de la session. Si vous effectuez des opérations UPDATE ou DELETE en cascade sur la source pendant la synchronisation, une incohérence des données peut se produire.

Choisir un mode de synchronisation incrémentielle

DTS propose deux modes pour synchroniser les données incrémentielles depuis SQL Server. Le mode choisi affecte les types de tables pris en charge et détermine si DTS modifie la base de données source.

Mode hybride journal et CDC Mode basé sur les journaux
Nom complet Analyse basée sur les journaux pour les tables non-heap et synchronisation incrémentielle basée sur CDC pour les tables heap Synchronisation incrémentielle basée sur les journaux de la base de données source
Prend en charge les tables heap Oui Non
Prend en charge les tables sans clés primaires Oui Non
Prend en charge les tables compressées Oui Non
Prend en charge les tables avec colonnes calculées Oui Non
Intrusion dans la base de données source Oui — DTS crée un déclencheur (dts_cdc_sync_ddl), une table de heartbeat (dts_sync_progress) et une table d'historique DDL (dts_cdc_ddl_history) dans la base de données source, et active CDC pour la base de données source et les tables spécifiques. Non — DTS ajoute uniquement une table de heartbeat (dts_log_heart_beat) à la base de données source.

Comment choisir :

  • Si vos tables source incluent des tables heap, des tables sans clés primaires, des tables compressées ou des tables avec des colonnes calculées, utilisez le mode hybride journal et CDC.

  • Si toutes vos tables source possèdent des index clusterisés contenant des colonnes de clé primaire et que vous souhaitez minimiser les modifications apportées à la base de données source, utilisez le mode basé sur les journaux.

Facturation

Type de synchronisation Frais
Synchronisation de schéma + synchronisation complète des données Gratuit
Synchronisation incrémentielle des données Facturé. Consultez Présentation de la facturation.

Topologies de synchronisation prises en charge

  • Synchronisation unidirectionnelle un-à-un

  • Synchronisation unidirectionnelle un-à-plusieurs

  • Synchronisation unidirectionnelle plusieurs-à-un

Pour plus de détails, consultez Topologies de synchronisation.

Autorisations requises

Base de données Autorisations requises
SQL Server auto-géré Rôle de serveur fixe sysadmin. Consultez CREATE USER et GRANT (Transact-SQL).
AnalyticDB for PostgreSQL LOGIN ; SELECT, CREATE, INSERT, UPDATE et DELETE sur les tables de destination ; CONNECT et CREATE sur la base de données de destination ; CREATE sur les schémas de destination ; COPY (copie par lots en mémoire). Le compte initial de l'instance dispose de ces autorisations par défaut. Consultez Créer un compte de base de données et Gérer les utilisateurs et les autorisations.

Préparer la base de données SQL Server source

Configurez le modèle de récupération de SQL Server et créez des sauvegardes avant de configurer la tâche DTS. Ces étapes nécessitent les privilèges sysadmin.

Avertissement

Si vous synchronisez des données incrémentielles depuis plusieurs bases de données, répétez toutes les étapes de cette section pour chaque base de données.

Définir le modèle de récupération sur Full

Exécutez l'instruction suivante sur la base de données source. Vous pouvez également utiliser SQL Server Management Studio (SSMS) — consultez Afficher ou modifier le modèle de récupération d'une base de données (SQL Server).

USE master;
GO
ALTER DATABASE <database_name> SET RECOVERY FULL WITH ROLLBACK IMMEDIATE;
GO

Remplacez <database_name> par le nom de la base de données source. Exemple :

USE master;
GO
ALTER DATABASE mytestdata SET RECOVERY FULL WITH ROLLBACK IMMEDIATE;
GO

Créer une sauvegarde de base de données

Ignorez cette étape si vous avez déjà créé une sauvegarde complète.

BACKUP DATABASE <database_name> TO DISK='<backup_file_path>';
GO
Espace réservé Description Exemple
<database_name> Nom de la base de données source mytestdata
<backup_file_path> Chemin complet et nom de fichier pour le fichier de sauvegarde D:\backup\dbdata.bak

Exemple :

BACKUP DATABASE mytestdata TO DISK='D:\backup\dbdata.bak';
GO

Créer une sauvegarde de journal

BACKUP LOG <database_name> TO DISK='<backup_file_path>' WITH INIT;
GO

Exemple :

BACKUP LOG mytestdata TO DISK='D:\backup\dblog.bak' WITH INIT;
GO

Configurer la tâche de synchronisation

Étape 1 : Ouvrir la console DTS

Accédez à la page Synchronisation de données dans la console DTS.Console DTS

Vous pouvez également vous connecter à la console Data Management (DMS) . Dans la barre de navigation supérieure, cliquez sur DTS . Dans le volet de navigation de gauche, choisissez DTS (DTS) > Data Synchronization .

Étape 2 : Sélectionner une région

Dans le coin supérieur gauche, sélectionnez la région où réside l'instance de synchronisation.

Étape 3 : Créer une tâche et configurer les bases de données

Cliquez sur Create Task. Configurez les connexions aux bases de données source et de destination :

Base de données source

Paramètre Valeur
Type de base de données SQL Server
Méthode d'accès Self-managed Database on ECS
Région de l'instance Région de l'instance ECS hébergeant SQL Server
ID de l'instance ECS ID de l'instance ECS
Compte de base de données Compte disposant des privilèges sysadmin
Mot de passe de la base de données Mot de passe du compte
Chiffrement Sélectionnez Non-encrypted ou SSL-encrypted

Base de données de destination

Paramètre Valeur
Type de base de données AnalyticDB for PostgreSQL
Méthode d'accès Alibaba Cloud Instance
Région de l'instance Région de l'instance de destination
ID de l'instance ID de l'instance AnalyticDB for PostgreSQL de destination
Nom de la base de données Nom de la base de données cible
Compte de base de données Compte disposant des autorisations requises
Mot de passe de la base de données Mot de passe du compte

Étape 4 : Tester la connectivité et configurer l'accès réseau

Cliquez sur Test Connectivity and Proceed. DTS vérifie la connexion aux deux bases de données et configure automatiquement l'accès réseau lorsque c'est possible :

  • Instances de base de données Alibaba Cloud : DTS ajoute automatiquement les blocs CIDR du serveur DTS à la liste d'autorisation de l'instance.

  • Bases de données auto-gérées sur ECS : DTS ajoute automatiquement les blocs CIDR du serveur DTS aux règles du groupe de sécurité ECS. Ajoutez manuellement ces blocs CIDR à la liste d'autorisation de la base de données auto-gérée sur l'instance ECS.

  • Bases de données sur site ou sur cloud tiers : Ajoutez manuellement les blocs CIDR du serveur DTS à la liste d'autorisation de la base de données. Pour connaître les blocs CIDR à ajouter, consultez Ajouter les blocs CIDR des serveurs DTS aux paramètres de sécurité des bases de données sur site.

Avertissement
  • L'ajout des blocs CIDR du serveur DTS aux listes d'autorisation ou aux règles de groupe de sécurité expose ces endpoints au réseau. Prenez des précautions : utilisez des identifiants forts, restreignez les ports exposés, authentifiez les appels API, auditez régulièrement les entrées de la liste d'autorisation et envisagez d'utiliser Express Connect, VPN Gateway ou Smart Access Gateway pour une connectivité privée.

  • Une fois la tâche DTS terminée ou libérée, supprimez les blocs CIDR DTS des listes d'autorisation et des règles de groupe de sécurité. Supprimez tout groupe de liste d'autorisation d'adresse IP dont le nom contient dts de la liste d'autorisation de l'instance Alibaba Cloud et des règles de groupe de sécurité ECS, et supprimez les blocs CIDR DTS de la liste d'autorisation de la base de données auto-gérée.

Étape 5 : Sélectionner les objets et configurer les paramètres

Paramètres de base

Basic Settings

Paramètre Description
Étapes de la tâche Sélectionnez Schema Synchronization et Full Data Synchronization en plus de la valeur par défaut Incremental Data Synchronization. La synchronisation complète des données charge les données historiques dans la destination avant le début de la synchronisation incrémentielle.
Mode de traitement des tables conflictuelles Precheck and Report Errors : fait échouer la pré-vérification si la destination contient déjà des tables portant les mêmes noms que la source. Utilisez le mappage de nom d'objet pour résoudre les conflits de nommage. Ignore Errors and Proceed : ignore la pré-vérification. Pendant la synchronisation complète, les enregistrements existants avec des clés primaires correspondantes sont conservés dans la destination. Pendant la synchronisation incrémentielle, ils sont écrasés.
Opérations DDL et DML à synchroniser Sélectionnez les opérations à synchroniser. Pour connaître les opérations prises en charge, consultez Opérations prises en charge. Pour sélectionner les opérations d'une table spécifique, faites un clic droit sur la table dans Selected Objects et choisissez les opérations.
Mode de synchronisation incrémentielle SQL Server Sélectionnez un mode en fonction de vos types de tables et des contraintes de la base de données source. Pour obtenir des conseils, consultez Choisir un mode de synchronisation incrémentielle.
Sélectionner les objets Dans Source Objects, sélectionnez les objets à synchroniser et cliquez sur Rightwards arrow pour les déplacer vers Selected Objects. Dans une synchronisation hétérogène, seules les tables peuvent être synchronisées — les vues, déclencheurs et procédures stockées sont exclus.
Renommer les bases de données et les tables Pour renommer un seul objet, faites un clic droit dessus dans Selected Objects. Pour renommer plusieurs objets à la fois, cliquez sur Batch Edit. Consultez Mapper les noms d'objets.
Filtrer les données Spécifiez des conditions WHERE pour filtrer les lignes. Consultez Utiliser des conditions SQL pour filtrer les données.

Advanced settings

Paramètre Description
Définir des alertes Configurez l'alerting en cas d'échec de tâche ou de latence de synchronisation dépassant un seuil. Sélectionnez Yesalert notifications pour spécifier un seuil d'alerte et des contacts. Consultez Configurer la surveillance et l'alerting.
Durée de nouvelle tentative pour les connexions échouées Plage de temps pendant laquelle DTS tente de nouveau une connexion échouée après le démarrage de la tâche. Plage : 10–1440 minutes. Par défaut : 720 minutes. Définissez cette valeur sur plus de 30 minutes. Si la durée de nouvelle tentative la plus courte est définie sur plusieurs tâches partageant la même base de données source ou de destination, cette valeur la plus courte est prioritaire.
Remarque

Si DTS tente de nouveau une connexion, vous serez facturé pour l'instance DTS. Spécifiez la plage de temps de nouvelle tentative en fonction de vos besoins métier, ou libérez l'instance DTS rapidement après la libération des instances source et de destination.

Étape 6 : Configurer les colonnes de clé primaire et de clé de distribution

Cliquez sur Next: Configure Database and Table Fields. Définissez les colonnes de clé primaire et les colonnes de clé de distribution pour chaque table de destination.

AnalyticDB for PostgreSQL: Set the primary key columns and distribution key columns

Étape 7 : Exécuter la pré-vérification

Cliquez sur Next: Save Task Settings and Precheck.

La tâche ne peut pas démarrer tant qu'elle n'a pas réussi la pré-vérification.
Pour tout élément ayant échoué, cliquez sur View Details , corrigez le problème et cliquez sur Precheck Again .
Pour un élément d'alerte que vous pouvez ignorer en toute sécurité, cliquez sur Confirm Alert Details à côté de l'élément, puis cliquez sur Ignore > OK > Precheck Again . Ignorer les alertes peut entraîner une incohérence des données.

Étape 8 : Attendre la fin de la pré-vérification

Attendez que le taux de réussite atteigne 100 %, puis cliquez sur Next: Purchase Instance.

Étape 9 : Acheter l'instance de synchronisation

Configurez la facturation et la classe d'instance :

Paramètre Description
Méthode de facturation Subscription : paiement anticipé ; rentable pour une utilisation à long terme. Pay-as-you-go : facturation horaire ; adapté à une utilisation à court terme. Libérez l'instance lorsqu'elle n'est plus nécessaire pour éviter des frais continus.
Classe d'instance Sélectionnez une classe en fonction du débit de synchronisation requis. Consultez Spécifications des instances de synchronisation de données.
Durée de l'abonnement Si vous utilisez la facturation par abonnement, sélectionnez 1 à 9 mois ou 1 à 3 ans.

Étape 10 : Accepter les conditions de service

Lisez et cochez la case pour Data Transmission Service (Pay-as-you-go) Service Terms.

Étape 11 : Démarrer la tâche

Cliquez sur Buy and Start. La tâche apparaît dans la liste des tâches. Surveillez la progression de la synchronisation à partir de là.

Étapes suivantes