CORRECTIF : message d'erreur lorsque vous exécutez l'Agent de distribution pour synchroniser les abonnés avec l'éditeur dans Microsoft SQL Server 2005 ou appel de procédure distant (TDS) flux du protocole (RPC) est incorrect du flux de SQL Server 2008: '' le données tabulaires entrantes "

Traductions disponibles Traductions disponibles
Numéro d'article: 973103 - Voir les produits auxquels s'applique cet article
Microsoft distribue les correctifs Microsoft SQL Server 2005 sous la forme d'un fichier téléchargeable unique. Les correctifs étant cumulatifs, chaque nouvelle version contient tous les correctifs et tous les correctifs de sécurité inclus avec la précédente SQL Server 2005 version du correctif.
Agrandir tout | Réduire tout

Sommaire

Symptômes

Vous utilisez la réplication transactionnelle dans Microsoft SQL Server 2005. Lorsque vous exécutez l'Agent de distribution pour synchroniser les abonnés avec l'éditeur, l'Agent de distribution peut échouer et vous recevez message d'erreur suivantes dans l'historique de l'Agent de distribution ou dans le journal de sortie :

42000 Les données tabulaires entrantes flux (TDS) remote procedure call (RPC) flux du protocole est incorrect. Trop de paramètres ont été fournies dans cette demande RPC. La valeur maximale est 2100. 8003

Lorsque ces erreurs se produisent à plusieurs reprises, les performances peuvent être affectés. Lorsqu'une telle défaillance se produit, l'Agent de distribution fera nouvelle tentative de traitement essayez le même commandes à nouveau. Par conséquent, l'Agent de distribution utilise plus de temps pour synchroniser les abonnés avec l'éditeur car chaque lot problématique est testé deux fois.

Cause

Lorsque l'Agent de distribution traite les commandes en attente dans la base de données de distribution, il utilise le paramètre CommitBatchSize et le paramètre CommitBatchThreshold pour déterminer combien de commandes sont regroupées comme une exécution lorsqu'il envoie ces commandes pour les abonnés.

Le paramètre CommitBatchSize est le nombre de transactions à transmettre aux abonnés qu'une instruction COMMIT soit émise. La valeur par défaut est 100. Le paramètre CommitBatchThreshold est le nombre de commandes de réplication à transmettre aux abonnés qu'une instruction COMMIT soit émise. La valeur par défaut est 1000.

Car une transaction unique peut contenir une commande ou peut contenir plusieurs commandes, définissant le paramètre CommitBatchSize à 100 et définir le paramètre CommitBatchThreshold 1000 peuvent permettre plusieurs milliers commandes pour être remis dans un lot de commandes.

Lorsqu'un article est ajouté à une composition, @ ins_cmd , @ upd_cmd et @ del_cmd paramètres du type de commande de réplication sont spécifiés pour stockée sp_addarticle procédure pour déterminer comment fournir des commandes à l'abonné. Outre les paramètres CommitBatchSize et CommitBatchThreshold , l'Agent de distribution a également prendre en compte qu'il existe maximale exigences dans SQL native client fournisseur OLE DB sur le nombre de paramètres peut être lié dans un lot de commandes qui est envoyé à l'abonné.

Il existe au maximum 2100 paramètres qui peuvent être utilisés dans un lot de commandes. Par conséquent, l'Agent de distribution divise des lots volumineuses automatiquement en juste assez instructions par lot afin que le nombre maximal de 2100 paramètres n'est pas dépassé. Ensuite, toutes les commandes restantes du lot de commandes sont automatiquement déplacés dans le lot suivant l'exécution.

Ce problème se produit lorsque l'Agent de distribution calcule le nombre de paramètres qui sont nécessaires pour fournir un lot de commandes de manière incorrecte. Cela se produit si l'Agent de distribution utilise la procédure stockée dynamique sp_executesql comme un wrapper pour un lot de nombreuses commandes répliquées.

Si la commande répliquée contient plusieurs 2098 paramètres dans la commande et la commande est encapsulée par l'utilisation de la procédure stockée sp_executesql pour livrer le lot comme une instruction Transact-SQL construite dynamiquement, l'Agent de distribution n'inclut pas dans le calcul que sp_executesql stockées procédure besoins deux autres paramètres liés à la fonction. Par conséquent, le nombre total de paramètres peut dépasser 2100 paramètres.

L'Agent de distribution peut utiliser cette option de livraison de l'instruction Transact-SQL construite dynamiquement encapsulée avec la procédure stockée sp_executesql dans les situations suivantes :
  • L'article contient des colonnes BLOB (Binary Large Object) comme texte ou des colonnes image.
  • Plusieurs types de commande de réplication sert sur tous les articles. Par exemple, si un article utilise le type de commande SQL livraison réplication, mais un autre article utilise la procédure stockée sp_MSins_procedure comme type de commande de réplication.

Résolution

SQL Server 2005

Le correctif de ce problème a été publié tout d'abord en mise à jour cumulative 5 pour SQL Server 2005 Service Pack 3. Pour plus d'informations sur ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
972511 Lot mises à jour cumulatives 5 pour SQL Server 2005 Service Pack 3
Remarque Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et tous les correctifs de sécurité inclus avec la précédente SQL Server 2005 version du correctif. Microsoft vous recommande d'envisager appliquer la dernière version de 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 :
960598Versions de SQL Server 2005 publiées après SQL Server 2005 Service Pack 3
Microsoft SQL Server 2005 correctifs sont créés pour service packs SQL Server spécifiques. Vous devez appliquer un correctif SQL Server 2005 Service Pack 3 à une installation de SQL Server 2005 Service Pack 3. Par défaut, aucun correctif fourni dans un service pack SQL Server est inclus dans le prochain service pack SQL Server.

SQL Server 2008

SQL Server 2008

important Vous devez utiliser ce correctif si vous exécutez la version de SQL Server 2008.

Le correctif de ce problème a été publié tout d'abord en mise à jour cumulative 7. Pour plus d'informations sur l'obtention de ce package de mises à jour cumulatives pour SQL Server 2008, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
973601Lot mises à jour cumulatives 7 pour SQL Server 2008
Remarque Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et tous les correctifs de sécurité inclus avec la précédente SQL Server 2008 version du correctif. Nous vous recommandons d'envisager d'appliquer la dernière version de 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 :
956909Versions de SQL Server 2008 publiées après SQL Server 2008

SQL Server 2008 Service Pack 1 (SP1)

important Vous devez utiliser ce correctif si vous exécutez SQL Server 2008 Service Pack 1 (SP1).

Le correctif de ce problème a été publié tout d'abord en mise à jour cumulative 4 pour SQL Server 2008 Service Pack 1. Pour plus d'informations sur ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
973602Lot mises à jour cumulatives 4 pour SQL Server 2008 Service Pack 1
Remarque Les versions étant cumulatives, chaque nouvelle version de correctif contient tous les correctifs et tous les correctifs de sécurité inclus avec la précédente SQL Server 2008 version du correctif. Microsoft vous recommande d'envisager appliquer la dernière version de 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 :
970365Versions de SQL Server 2008 publiées après SQL Server 2008 Service Pack 1
Microsoft SQL Server 2008 les correctifs sont créés pour service packs SQL Server spécifiques. Vous devez appliquer un correctif SQL Server 2008 Service Pack 1 à une installation de SQL Server 2008 Service Pack 1. Par défaut, aucun correctif fourni dans un service pack SQL Server est inclus dans le prochain service pack SQL Server.

Contournement

Pour contourner ce problème, appliquez l'une des méthodes suivantes :

Méthode 1

Pour réduire les occurrences de cette erreur à un niveau non plus, diminuez la valeur des paramètres CommitBatchSize et CommitBatchThreshold l'Agent de distribution. L'objectif est de limiter le nombre maximal de commandes par lot de validation, pour éviter de dépasser 2100 paramètres par lot de commandes.

Par exemple, la valeur par défaut du paramètre CommitBatchSize est 100. Vous pouvez le modifier à 10. La valeur par défaut du paramètre CommitBatchThreshold est 1 000. Vous pouvez le modifier à 100.

Ces valeurs décroissantes peut affecter les performances car lots ne sont pas remis dans tailles optimales à l'origine. Toutefois, cette méthode permet d'éviter les conditions d'erreur décrits dans la section cause.

Vous pouvez modifier les paramètres CommitBatchSize et CommitBatchThreshold en utilisant l'une des méthodes suivantes :
  • Ajouter les paramètres CommitBatchSize et CommitBatchThreshold dans la commande pour l'étape de travail Distribution Agent dans SQL Server Agent
  • Modifier les paramètres CommitBatchSize et CommitBatchThreshold lorsque vous créez un nouveau profil d'agent à partir de la boîte de dialogue Propriétés du distributeur ou de moniteur de réplication.
Pour plus d'informations sur la façon de modifier ces paramètres, site Web MSDN (Microsoft Developer Network) suivant :
http://msdn.microsoft.com/en-us/library/ms151326(SQL.90).aspx


Si vous souhaitez éviter complètement cette erreur de nouvelle tentative ultérieure du lot, vous devez prévoir le pire des cas. Pour ce faire, trouver l'article plus large qui utilise la plupart des nombre de colonnes dans votre composition. Par exemple, si vous avez une table qui comporte 100 colonnes qui est publiée dans la publication transactionnelle, une seule commande répliquée sur cette table peut contenir 100 paramètres. Vous devez réduire le paramètre CommitBatchThreshold afin que le nombre maximal de paramètres que l'Agent de distribution a à envoyer dans un seul lot soit au plus 2098. Si toutes les colonnes sont affectés par la commande, le paramètre CommitBatchThreshold doit être 20 ou plus petit pour permettre un maximum de 2000 paramètres par lot de 20 commandes sur cette table.

Méthode 2

Utilisez le même type de commande de réplication pour tous les articles de la composition lorsque vous configurez la composition. Éviter de mélanger les mécanismes de remise de commande pour articles de la même publication afin de réduire le besoin de l'Agent de distribution sélectionnez livrer le lot en utilisant la procédure stockée sp_executesql comme un wrapper sur un lot de commandes.

Statut

Microsoft a confirmé le que de ce problème dans les produits Microsoft répertoriés dans la section «S'applique à».

Plus d'informations

Pour plus d'informations sur l'Agent de distribution de réplications, site Web MSDN (Microsoft Developer Network) suivant :
http://msdn.microsoft.com/en-us/library/ms147328(SQL.90).aspx

Pour plus d'informations sur profils d'agent de réplication, site Web MSDN (Microsoft Developer Network) suivant :
http://msdn.microsoft.com/en-us/library/ms151223(SQL.90).aspx

Références

Pour plus d'informations sur le modèle de service incrémentiel pour SQL Server, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
935897Un modèle incrémentiel Servicing Model est disponible à partir de l'équipe SQL Server pour fournir des correctifs pour les problèmes signalés
Pour plus d'informations sur la façon d'obtenir SQL Server 2005 Service Pack 3, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
913089Comment obtenir le dernier pack service pour SQL Server 2005
Pour plus d'informations sur les nouvelles fonctionnalités de SQL Server 2005 SP3 et les améliorations apportées à SQL Server 2005 SP3, site Web Microsoft suivant :
http://go.microsoft.com/fwlink/?LinkId=131442
Pour plus d'informations sur le schéma d'appellation des mises à jour SQL Server, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
822499Nouveau schéma d'affectation de noms pour les packages de correctifs Microsoft SQL Server
Pour plus d'informations sur la terminologie mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la base de connaissances Microsoft :
824684Description de la terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft

Propriétés

Numéro d'article: 973103 - Dernière mise à jour: lundi 17 août 2009 - Version: 1.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Standard X64 Edition
  • Microsoft SQL Server 2005 Standard Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Enterprise X64 Edition
  • Microsoft SQL Server 2005 Enterprise Edition for Itanium Based Systems
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2008 Standard
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Workgroup
Mots-clés : 
kbmt kbsurveynew kbhotfixrollup kbfix kbpubtypekc kbqfe kbexpertiseadvanced kbhotfixserver KB973103 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 973103
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com