CORRECTIF : Données de la colonne peuvent être supprimées lorsque vous mettez à jour une autre colonne de longueur variable dans une table d’une base de données mise à niveau de SQL Server 2005

IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d’une traduction incorrecte du contenu ou de son utilisation par les clients.

La version anglaise de cet article est la suivante: 3120595
Symptômes
Lorsque vous mettez à jour une valeur dans une colonne de longueur variable dans une table d’une base de données qui a été mis à niveau à partir de Microsoft SQL Server 2005, les données dans une autre colonne de longueur variable dans la même ligne sont supprimées.

Ce problème se produit dans 2014 de Microsoft SQL Server et Microsoft SQL Server 2012. Le scénario suivant peut exposer une base de données à ce problème. Cette liste représente une séquence d’événements :

  • Une base de données est créée dans SQL Server 2005.
  • Dans SQL Server 2005, vous modifiez une table, et puis vous supprimer une ou plusieurs colonnes de longueur variable à la fin de la définition de table.
  • Vous ajoutez de nouvelles colonnes de longueur variable qui ont un type de données et la longueur des colonnes supprimées similaires.
  • La base de données est mis à niveau à partir de SQL Server 2005 à 2014 de SQL Server ou de SQL Server 2012.
  • Plus tard vous mettez à jour la valeur d’une autre colonne de longueur variable, et les données de mise à jour ont débordement vers une nouvelle page.
Dans ce scénario, les données dans une ou plusieurs des colonnes dans la même ligne nouvellement ajoutés peuvent être supprimées.

Vous pouvez utiliser le script dans le Plus d'informations section afin de vérifier les éléments suivants :

  • Si toutes les tables dans une base de données ont supprimé les colonnes de longueur variable
  • Si les colonnes de longueur variable supplémentaires ont été créés qui ont correspondants des offsets
Remarque Ce problème n’est pas détecté par DBCC CHECKDB.
Résolution
Remarque Ce correctif empêche uniquement les occurrences futures de ce problème.

Important Si vous mettez à niveau la base de données SQL Server 2005 à 2014 de SQL Server ou de SQL Server 2012, assurez-vous que vous faites référence à la section « Contournement ».

Ce problème a été tout d’abord résolu dans la mise à jour cumulative suivante pour SQL Server :

Il s’agit des dernières mises à jour cumulatives pour ces versions du programme.

Recommandation : Installez la dernière mise à jour cumulative 2014 de SQL Server ou de SQL Server 2012

Installez le chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et des correctifs de sécurité qui ont été inclus dans la précédente mise à jour cumulative. Découvrez les dernières mises à jour cumulatives pour SQL Server :



Remarque Pour plus d’informations sur les versions les plus récentes de SQL Server, reportez-vous à la section. Où trouver des informations sur la dernière version de SQL Server construit.
Contournement
Important Appliquer cette solution de contournement lorsque vous mettez à niveau la base de données SQL Server 2005 à 2014 de SQL Server ou de SQL Server 2012 et avant de laisser les instructions de mise à jour soit exécutée dans la base de données mis à niveau.

Pour contourner ce problème, si vous supprimez des colonnes dans un tableau, assurez-vous que vous effectuez l’une des opérations suivantes avant de mettre à jour ou de supprimer des lignes :

  • Reconstruire l’index ordonné en clusters à l’aide de ALTER INDEX (...) RECONSTRUIRE
  • Reconstruire le tas à l’aide de ALTER TABLE (...) RECONSTRUIRE

Plus d'informations
Vous pouvez utiliser le script suivant pour vérifier si toutes les tables dans une base de données ont supprimé les colonnes susceptibles d’être affectées par ce problème.

Remarque Si le script ne renvoie aucune ligne, ce qui signifie que ce problème n’a pas actuellement s’appliquent à n’importe quelle table dans votre système.
SELECT DISTINCT OBJECT_NAME(sp.[object_id]) AS TableWithDroppedColsFROM sys.system_internals_partition_columns sipc1 WITH (NOLOCK)INNER JOIN sys.system_internals_partition_columns sipc2 WITH (NOLOCK)       ON sipc1.[partition_id] = sipc2.[partition_id] AND              sipc1.leaf_offset = sipc2.leaf_offset AND              sipc1.leaf_offset < 0 AND               sipc1.is_dropped < sipc2.is_droppedINNER JOIN sys.partitions sp WITH (NOLOCK) ON sipc1.[partition_id] = sp.[partition_id];

Important Ce script doit être utilisé uniquement pour le rôle et la portée de cet article.
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft répertoriés dans la section « S'applique à ».

Avertissement : Cet article a été traduit automatiquement.

Propriétés

ID d'article : 3120595 - Dernière mise à jour : 05/31/2016 08:55:00 - Révision : 11.0

Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2014 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard

  • kbqfe kbfix kbexpertiseinter kbsurveynew kbmt KB3120595 KbMtfr
Commentaires