Se connecter avec Microsoft
S'identifier ou créer un compte.
Bonjour,
Sélectionnez un autre compte.
Vous avez plusieurs comptes
Choisissez le compte avec lequel vous voulez vous connecter.

Symptômes

Supposez que vous ajoutez une colonne à une table dans Microsoft SQL Server 2012 ou SQL Server 2014. Lorsque la taille de la ligne est proche de la taille maximale autorisée de 8 060 octets, l’opération d’ajout peut prendre un certain temps.

Cause

Le problème se produit car, lorsque la taille totale de la ligne est proche de la taille de ligne maximale autorisée, SQL Server effectue une analyse complète de la table afin de garantir que l’ajout d’une nouvelle colonne ne viole pas l’intégrité des données. Les versions antérieures à SQL Server 2012 n’effectuent pas cette vérification, ce qui rend le langage de définition de données (DDL) s’exécuter plus vite. Toutefois, ce comportement entraîne l’échec de l’exécution d’opérations ultérieures telles que la mise à jour de ligne ou la réduction de la taille de la ligne.

Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :

Informations supplémentaires

  • Vous pouvez activer l’indicateur de suivi 647 à l’aide du paramètre Startup. Pour plus d’informations, consultez options de démarrage du service du moteur de base de données.

  • Vous pouvez exécuter la requête suivante (remplacez <nom de la table> par votre nom de table réel) pour tester la table particulière avant l’opération sur un système de production et planifier l’effet de ce problème. Si le résultat est supérieur à 8 060, le tableau est soumis à ce problème. Par ailleurs, si vous avez interrompu des colonnes, vous devez modifier le tableau à l’aide de l’option de reconstruction. La reconstitution du tableau peut faire en sorte que la requête renvoie des résultats corrects.

    select  1+1+2 + 2 +  (case  when sum (case when leaf_offset < 0 then 1 else 0 end) > 0 then 2 else 0 end)  +  ( (count (*) + 7)/8 ) + count (case when leaf_offset < 0 then 1 else null end) * 2 +  sum( case when max_length=-1 then 24 else max_length end)  from sys.system_internals_partition_columns   col join sys.partitions par on col.partition_id = par.partition_id  where object_id = object_id ('<table name>')  and  index_id in (0,1) and partition_number =1 
  • Vous pouvez envisager d’ajouter des colonnes de longueur variable ou des colonnes clairsemées lorsque votre application ajoute fréquemment de nouvelles colonnes à la table. Il s’agit d’une opération de métadonnées uniquement, même si la taille totale de toutes les colonnes dépasse 8 060 octets.

Statut

Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?
En cliquant sur Envoyer, vos commentaires seront utilisés pour améliorer les produits et services de Microsoft. Votre administrateur informatique sera en mesure de collecter ces données. Déclaration de confidentialité.

Nous vous remercions de vos commentaires.

×