Partager via


Considérations sur la conservation des données pendant le déploiement et les mises à jour de schéma

Mise à jour : novembre 2007

Avant de synchroniser deux schémas, vous devez envisager de configurer les paramètres du projet de base de données pour éviter que vos modifications ne provoquent la perte de données précieuses. En configurant ces paramètres, vous pouvez bloquer la synchronisation si elle contient des modifications susceptibles de supprimer des données de la base de données cible. Pour plus d'informations, consultez Comment : contrôler la perte de données pendant le déploiement sur des bases de données existantes et Comment : définir des options pour comparer des schémas de base de données.

Toutefois, ce paramètre peut provoquer des résultats inattendus. Parfois, il empêche le déploiement des modifications même si aucune donnée précieuse ne risque d'être perdue. Dans d'autres cas, il autorise le déploiement des modifications alors que SQL Server pourrait provoquer la perte de données lors de la mise à jour de la cible.

Déploiement bloqué inutilement

Si vous configurez les paramètres du projet de manière à éviter la perte de données, vous ne pourrez peut-être pas synchroniser deux schémas même si aucune donnée précieuse ne risque d'être perdue. Par exemple, vous pouvez supprimer une colonne de données dans un projet de base de données et essayer de déployer cette modification dans la base de données cible. Bien que vous ayez supprimé la colonne intentionnellement, le déploiement sera bloqué pour empêcher la perte de données sur la cible.

Autre exemple : le déploiement sera bloqué si un type de données de la source ne peut pas être vérifié comme étant compatible avec le type de données équivalent dans la cible. Cette situation peut se produire si la source ou la cible contient un type de données défini par l'utilisateur ou un type du Common Language Runtime (CLR). Le déploiement sera bloqué si, par exemple, un type de données est défini dans la source comme caractère (100) et le type de données est défini dans la cible comme un type de données défini par l'utilisateur tel que : CREATE TYPE [schéma].[UserDefinedDataType] FROM char(100) NOT NULL.

Si nécessaire, vous pouvez configurer temporairement vos paramètres du projet pour autoriser la synchronisation après avoir inspecté le script de déploiement ou de mise à jour et vérifier que les modifications ne provoqueront pas la perte de données précieuses.

Perte de données pendant un déploiement non bloqué

Même si vous configurez votre projet de base de données de manière à éviter la perte de données, SQL Server peut, dans certains cas, provoquer la perte de données pendant l'exécution de la synchronisation. Avant de synchroniser deux schémas, vous devez inspecter le script de déploiement ou de mise à jour pour vérifier s'il contient les éléments suivants :

  • Modifications de l'ordre des colonnes d'une table.

  • Transformations d'un type de données de colonne en un type qui n'est pas compatible avec un type de données existant et qui utilise des types de données natifs de SQL. Cette situation peut se produire si une modification du type de données provoque une troncation de données, par exemple un passage de int à bit ou de nvarchar(100) à char(10).

  • Modifications d'une propriété de colonne, telle que l'identité d'une colonne.

  • Modifications des propriétés d'une colonne d'identité dans une table, telles que le début du compteur.

  • Modifications d'une colonne qui n'autorise pas de valeurs NULL et qui n'est associée à aucune valeur par défaut, de telle sorte que la colonne autorise des valeurs nulles.

  • Modifications d'une colonne qui n'autorise pas de valeurs NULL lorsque la table contient des colonnes supplémentaires qui sont liées à la colonne que vous modifiez.

  • Ajout d'une colonne dans laquelle vous avez activé la case à cocher Obliger l'ordre des colonnes à être identique. Pour plus d'informations, consultez Options (Outils de base de données/Comparaison de schémas).

  • Modifications du groupe de fichiers d'une table.

Si le script de déploiement ou de mise à jour contient ces types de modifications, vous pouvez le modifier manuellement pour protéger les données.

Voir aussi

Tâches

Comment : contrôler la perte de données pendant le déploiement sur des bases de données existantes

Comment : déployer des modifications vers des bases de données nouvelles ou existantes

Comment : définir des options pour comparer des schémas de base de données

Comment : synchroniser des schémas de base de données

Concepts

Vue d'ensemble de la terminologie de Database Edition