Mise à niveau de la communauté de synchronisation de bases de données
Cette rubrique vous indique comment mettre à niveau une communauté de synchronisation à partir de Sync Framework 2.0 vers Sync Framework 2.1. Les exemples de cette rubrique reposent sur les classes Sync Framework suivantes :
Présentation de la mise à niveau de la communauté
Sync Framework 2.1 présente de nouvelles fonctionnalités et modifications au format de métadonnées de bases de données qui rendent cette version incompatible avec les versions précédentes de Sync Framework. Toutefois, Sync Framework 2.1 peut fonctionner en mode de compatibilité descendante avec les bases de données qui présentent le format 2.0 afin que la synchronisation puisse se poursuivre même lorsque certains membres de la communauté n'ont pas encore procédé à la mise à niveau. Sachez toutefois que, s'il est possible d'effectuer la synchronisation en mode de compatibilité descendante, la plupart des fonctionnalités sont désactivées tant que la base de données n'a pas été mise à niveau avec le format 2.1. Reportez-vous au tableau figurant à la section Fonctionnalités disponibles en mode de compatibilité descendante pour connaître la liste des fonctionnalités qui peuvent être utilisées en mode de compatibilité descendante. En suivant les étapes décrites à la section Mise à niveau de la communauté de synchronisation, vous pouvez mettre à niveau votre communauté tout en gardant vos bases de données synchronisées.
Présentation de la mise à niveau des métadonnées
La modification du format des métadonnées de bases de données dans Sync Framework 2.1 est la principale considération à prendre en compte lors de la mise à niveau de votre communauté. Le nouveau format de métadonnées est incompatible avec les versions précédentes des fournisseurs de bases de données. La mise à niveau vers le nouveau format de métadonnées ne peut pas être annulée et, lorsque vous essayez d'utiliser une version antérieure des fournisseurs de bases de données pour synchroniser une base de données au format 2.1, Sync Framework lève une exception. Toutefois, la classe SqlSyncProvider dans Sync Framework 2.1 détecte la version du format de métadonnées et opère en mode de compatibilité descendante pour synchroniser une base de données contenant des métadonnées sous l'ancien format. Étant donné que Sync Framework 2.1 peut synchroniser une base de données sous l'ancien format avec une base de données sous n'importe quel format, il n'est pas nécessaire d'effectuer la mise à niveau des métadonnées de toutes vos bases de données en même temps. Toutefois, pour être certain que les bases de données dans votre communauté de synchronisation peuvent continuer à être synchronisées entre elles après la mise à niveau de certaines, vous devez effectuer leur mise à niveau dans le bon ordre. Cela est particulièrement important lorsque vous utilisez une architecture à deux couches, car les anciennes versions de Sync Framework ne peuvent pas lire le format 2.1. La section Mise à niveau d'une communauté à deux couches de ce document présente une procédure pour mettre à niveau une communauté à deux couches. Si vous utilisez une architecture multicouche, vous pouvez effectuer la mise à niveau dans n'importe quel ordre, à condition que le fournisseur proxy local puisse continuer à communiquer avec le composant de service qui représente le fournisseur de base de données sur le serveur. Pour plus d'informations sur les composants utilisés dans une architecture multicouche, consultez Architecture et classes pour la synchronisation de base de données.
Gardez à l'esprit que les composants Sync Framework 2.1 dans l'espace de noms Microsoft.Synchronization.Data.SqlServerCe effectuent automatiquement la mise à niveau du format des métadonnées d'une base de données SQL Server Compact. Cette mise à niveau se produit lors de la première connexion d'un composant de cet espace de noms à la base de données.
Mise à niveau de la communauté de synchronisation
Dans la mesure où SqlSyncProvider dispose d'un mode de compatibilité descendante, il peut synchroniser les bases de données SQL Server qui stockent les métadonnées sous l'ancien format. Cela signifie que vous pouvez mettre à niveau des bases de données individuelles de la communauté si nécessaire, sans devoir les mettre toutes à niveau en même temps. Les sections suivantes décrivent les étapes de la mise à niveau d'une base de données individuelle et une procédure à utiliser pour mettre à niveau les bases de données d'une communauté qui utilise une architecture à deux couches.
Mise à niveau d'une base de données
Pour mettre à niveau une base de données, utilisez la procédure générale suivante :
Installez Sync Framework 2.1. Cela permet une installation côte à côte avec Sync Framework 2.0.
Recompilez votre application de synchronisation et d'autres composants de façon à ce qu'ils utilisent Sync Framework 2.1 en mettant à jour les références aux assemblys Sync Framework afin qu'ils désignent les assemblys 2.1, ou utilisez la redirection de liaison pour charger les assemblys Sync Framework 2.1. Pour plus d'informations sur la redirection de liaison, consultez Compatibilité descendante et interopérabilité de Sync Framework.
À ce stade, vous pouvez continuer à synchroniser une base de données SQL Server sans effectuer la mise à niveau du format de métadonnées, car SqlSyncProvider opère en mode de compatibilité descendante. Si vous synchronisez une base de données SQL Server Compact, elle sera automatiquement mise à niveau vers le nouveau format de métadonnées. Gardez à l'esprit que seule la synchronisation opère en mode de compatibilité descendante. La plupart des autres fonctionnalités ou opérations relatives aux métadonnées introduites dans Sync Framework 2.1 aboutissent à la levée d'une DbSyncException lors de l'exécution sur une base de données avec des métadonnées 2.0.
Effectuez la mise à niveau du format des métadonnées de la base de données en appelant SqlSyncStoreMetadataUpgrade..::..UpgradeSyncSchema ou SqlCeSyncStoreMetadataUpgrade..::..UpgradeSyncSchema. L'exemple suivant indique comment procéder :
sqlUpgrader = new SqlSyncStoreMetadataUpgrade(serverConn, null, null); sqlUpgrader.UpgradeSyncSchema();
sqlUpgrader = New SqlSyncStoreMetadataUpgrade(serverConn, Nothing, Nothing) sqlUpgrader.UpgradeSyncSchema()
Vous pouvez à présent synchroniser la base de données mise à niveau avec des bases de données de n'importe quel format.
Mise à niveau d'une communauté à deux couches
Lorsque vous utilisez une architecture à deux couches pour votre communauté de synchronisation, Sync Framework est exécuté sur votre ordinateur local et synchronise une base de données locale avec une base de données sur un ordinateur distant qui n'exécute pas Sync Framework. Dans une communauté à deux couches qui utilise une topologie Hub and Spoke, vous devez mettre à niveau la version de Sync Framework sur tous les ordinateurs Spoke avant de mettre à niveau les métadonnées de la base de données sur l'ordinateur Hub. Dans le cas contraire, lorsqu'un ordinateur Spoke utilisant Sync Framework 2.0 essaiera d'être synchronisé avec la base de données mise à niveau sur l'ordinateur Hub, Sync Framework ne pourra pas lire le nouveau format de métadonnées et la synchronisation échouera.
Pour mettre à niveau une communauté à deux couches qui utilise une topologie Hub and Spoke, utilisez la procédure générale suivante :
Utilisez la procédure de la section Mise à niveau d'une base de données pour mettre à niveau un ordinateur Spoke, une application de synchronisation et une base de données vers Sync Framework 2.1.
À ce stade, vous pouvez continuer la synchronisation de la base de données Spoke avec la base de données Hub. Sync Framework opère sur la base de données Hub en mode de compatibilité descendante afin que seule la synchronisation fonctionne. D'autres opérations relatives aux métadonnées sur la base de données Hub lèvent DbSyncException.
Mettez à niveau les ordinateurs Spoke restants.
Une fois que tous les ordinateurs Spoke sont mis à niveau, mettez à niveau la base de données Hub vers le nouveau format de métadonnées.
Fonctionnalités disponibles en mode de compatibilité descendante
Lorsque Sync Framework opère en mode de compatibilité descendante, de nombreuses fonctionnalités ne peuvent pas être utilisées. Le tableau suivant répertorie certaines fonctionnalités de Sync Framework et indique si elles peuvent être utilisées en mode de compatibilité descendante.
Sync Framework Fonctionnalité |
Utilisable en mode de compatibilité descendante ? |
---|---|
Synchronisation |
Oui |
Nettoyage des métadonnées |
Oui |
Traitement par lot |
Oui |
Détection d'étendue |
Oui |
Approvisionnement et annulation de l'approvisionnement |
Non |
Génération d'instantanés |
Non |
Initialisation de l'instantané à partir d'une base de données sous l'ancien format |
Oui, mais les métadonnées sont automatiquement mises à niveau vers le nouveau format. |
Taille maximale de la transaction d'application |
Non |
Restauration à partir d'une sauvegarde sous l'ancien format |
Non |
Exceptions levées lorsque les versions des métadonnées et composants ne correspondent pas
Lorsqu'une méthode Sync Framework 2.1 est appelée pour une fonctionnalité qui ne prend pas en charge le mode de compatibilité descendante ou lorsque des composants Sync Framework plus anciens sont utilisés pour synchroniser une base de données au nouveau format, des exceptions sont levées pour indiquer qu'une erreur s'est produite. La liste des exceptions suivante décrit les cas dans lesquels les exceptions sont levées.
DbVersionException est levée. Cette situation se produit lorsqu'une méthode Sync Framework 2.1 est appelée sur une base données sous l'ancien format et que la méthode ne prend pas en charge la compatibilité descendante, par exemple l'approvisionnement d'une étendue en appelant SqlSyncScopeProvisioning..::..Apply.
SqlException est levée avec le message suivant : « Nom de colonne 'scope_name' non valide ». Cette situation se produit lorsqu'un objet SqlSyncProvider d'une version antérieure de Sync Framework essaie de synchroniser une base de données au nouveau format.
DbSyncException est levée avec le message suivant : « Une erreur s'est produite lors de l'initialisation d'adaptateurs pour l'étendue '<scope name>'. Assurez-vous que le nom d'étendue spécifié sur le fournisseur existe dans la table des métadonnées de l'étendue, et que les tables de base appropriées sont spécifiées pour cette étendue ». Cette situation se produit lorsqu'un objet SqlCeSyncProvider d'une version antérieure de Sync Framework essaie de synchroniser une base de données au nouveau format.