CORRECTIF : « Expression : (pCopySrc - commande) < = (int) cmdLength » erreur lorsque vous ajoutez une colonne à une table publiée dans une publication transactionnelle dans SQL Server 2008 R2

S’applique à : SQL Server 2008 R2

Microsoft distribue les correctifs de Microsoft SQL Server 2008 R2 en tant que fichier téléchargeable. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et correctifs de sécurité inclus dans la précédente de SQL Server 2008 R2 version du correctif.

Symptômes


Prenons l’exemple du scénario suivant :
  • Vous créez une publication transactionnelle dans SQL Server 2008 R2.
  • Vous ajoutez une table sous la forme d’un article à la publication.
  • Initialisation de la publication transactionnelle et générer la capture instantanée initiale.
  • Vous essayez d’exécuter une requête pour ajouter une nouvelle colonne à la table. Par exemple, vous essayez d’exécuter la requête suivante pour ajouter la colonne < nom > dans la table < nom_table > :
    Alter table <table name> add <column name> int null
Dans ce scénario, la requête ne s’exécute pas, et vous recevez un message d’erreur semblable au suivant :
Emplacement : replschema.cpp:1305Expression : (pCopySrc - commande) < = (int) cmdLengthSPID : < Spid > ID du processus : < ID de processus >
Msg 4902, niveau 16, état 1, ligne 2Cannot de trouver l' objet < nom > car il n’existe pas ou vous ne disposez pas des autorisations. Lorsque ce problème se produit, le message d’erreur suivant est enregistré dans le fichier journal des erreurs de SQL Server.
Ou bien, vous pouvez rencontrer l’erreur légèrement différent suivant :
Msg 3624, niveau 20, état 1, procédure sp_replflush, contrôle d’assertion ligne 1 a a échoué. Vérifiez le journal des erreurs SQL Server pour plus de détails. En général, un échec d’assertion est dû à une corruption de données ou bogue logiciel. Pour vérifier la base de données, pensez à l’exécution de DBCC CHECKDB. Si vous avez accepté d’envoyer les images à Microsoft lors de l’installation, un mini-vidage est envoyé à Microsoft. Une mise à jour peut être disponible auprès de Microsoft dans le dernier Service Pack ou un correctif auprès du Support technique.
En outre, les entrées suivantes sont consignées dans le journal des erreurs :
25-03-2011 08:56:14.71 spid55 erreur : 17066, gravité : 16, état : 1.2011-03-25 08:56:14.71 spid55 SQL Server Assertion : fichier : < replschema.cpp >, ligne = Échec de l’Assertion 1305 = '(pCopySrc-command) < = (int) cmdLength ». Cette erreur est éventuellement liée à un délai d'attente. Si l’erreur persiste après la réexécution de l’instruction, utilisez DBCC CHECKDB pour vérifier la base de données pour l’intégrité structurelle ou redémarrez le serveur pour vérifier les structures de données en mémoire ne sont pas corrupted.2011-03-25 08:56:14.92 spid55 erreur : 3624, gravité : 20, état : 25-03-1.2011 spid55 de 08:56:14.92 un contrôle d’assertion a échoué. Vérifiez le journal des erreurs SQL Server pour plus de détails. En général, un échec d’assertion est dû à une corruption de données ou bogue logiciel. Pour vérifier la base de données, pensez à l’exécution de DBCC CHECKDB. Si vous avez accepté d’envoyer les images à Microsoft lors de l’installation, un mini-vidage est envoyé à Microsoft. Une mise à jour peut être disponible auprès de Microsoft dans le dernier Service Pack ou un correctif auprès du Support technique.

Résolution


Informations sur les mises à jour cumulatives

SQL Server 2008 R2 Service Pack 1

Le correctif de ce problème a été publié dans à jour Cumulative 1 pour SQL Server 2008 R2 Service Pack 1. Pour plus d’informations sur l’obtention de ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
2544793 Mise à jour cumulative 1 pour SQL Server 2008 R2 Service Pack 1
Remarque Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus dans la précédente version du correctif de SQL Server 2008 R2. Nous vous recommandons l’application la plus récente version du correctif qui comprendra ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2567616 Versions de SQL Server 2008 R2 publiées après SQL Server 2008 R2 Service Pack 1
SQL Server 2008 R2le correctif de ce problème a été publiée dans les 7 mise à jour Cumulative. Pour plus d’informations sur l’obtention de ce package de mise à jour cumulative pour SQL Server 2008 R2, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
2507770 Mise à jour cumulative 7 pour SQL Server 2008 R2
Remarque Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et correctifs de sécurité inclus dans la précédente version du correctif de SQL Server 2008 R2. Nous vous recommandons l’application la plus récente version du correctif qui comprendra ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
981356 Versions de SQL Server 2008 R2 publiées après SQL Server 2008 R2

Solution de contournement


Pour contourner ce problème, modifiez le nom de la table contient moins de 8 caractères.

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.