CORRECTIF : Recevoir des redémarrages d’emplacement lorsque vous utilisez l’adaptateur WCF-SQL ou l’adaptateur WCF et Oracle dans le Pack d’adaptateur BizTalk

S’applique à : BizTalk Adapters

Cet article s’applique au produit suivant :
  • Pack d’adaptateur BizTalk 2.0
  • Module d’adaptateur BizTalk 2010

Symptômes


Lorsque vous utilisez un des adaptateurs suivants qui sont inclus dans le Pack Microsoft BizTalk carte 2.0 ou Microsoft BizTalk carte Pack 2010 sur un emplacement de réception, l’emplacement de réception redémarre de façon inattendue :
  • Windows Communication Foundation (WCF)-carte SQL
  • L’adaptateur WCF et Oracle
En outre, BizTalk Server peut rencontrer l’exception de ConnectionException , et ensuite le serveur BizTalk server peut redémarrer une fois qu’un des avertissements suivants est enregistré dans le journal d’Application.

Carte de WCF-SQL

Avertissement 1
« La carte « « WCF-SQL » » déclenché un message d’erreur. Détails « "System.ObjectDisposedException : Impossible d’accéder à un objet supprimé. Nom de l’objet : « Transaction » .à System.Transactions.Transaction.Rollback (Exception e) à Microsoft.Adapters.Sql.SqlAdapterInboundHandler.TryReceive (délai d’expiration TimeSpan, Message & le message, la IInboundReply & réponse) à Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.TryReceive (délai d’attente de TimeSpan, Message & message) à System.ServiceModel.Dispatcher.InputChannelBinder.TryReceive (délai d’expiration TimeSpan, RequestContext & requestContext) à System.ServiceModel.Dispatcher.ErrorHandlingReceiver.TryReceive (délai d’expiration TimeSpan, RequestContext & requestContext) » ». »
Avertissement 2
« La carte « « WCF-SQL » » déclenché un message d’erreur. Détails « "System.TimeoutException : Exception de type 'System.TimeoutException' était () de Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired thrown.at à Microsoft.Adapters.Sql.ExecutionHelper.ExecuteScalar (SqlCommand sqlCommand, TimeoutHelper timeoutHelper) à Microsoft.Adapters.Sql.SqlAdapterInboundHandler.Polling_WaitForMessage (TimeoutHelper timeoutHelper) à Microsoft.Adapters.Sql.SqlAdapterInboundHandler.WaitForMessage (TimeSpan timeout) à Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (expiration TimeSpan) à System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (TimeSpan timeout) à System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage() » ». »

Carte de WCF et Oracle

Avertissement 1
La carte « WCF-Oracle » a déclenché un message d’erreur. Détails « Microsoft.ServiceModel.Channels.Common.ConnectionException : le délai d’expiration « 00 : 02:00 » a expiré lors de l’exécution de la fonction « WaitForMessage ». ---> System.TimeoutException : le délai d’expiration « 00 : 02:00 » a expiré lors de l’exécution de la fonction « WaitForMessage ». à Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired() à Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout (commande OracleCommand, TimeoutHelper timeoutHelper) à Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteNonQuery (OracleCommand commande, OracleCommonExecutionHelper executionHelper) à Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection () ExecutionHelper OracleCommonExecutionHelper)---fin de la trace de pile d’exception interne---à Microsoft.Adapters.OracleDB.OracleDBConnection.OpenConnection (OracleCommonExecutionHelper executionHelper) à Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage (OracleCommonExecutionHelper executionHelper) à Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage (expiration TimeSpan) à Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (TimeSpan timeout) à System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (expiration TimeSpan) à System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage() ».
Avertissement 2
La carte « WCF-Oracle » a déclenché un message d’erreur. Détails « System.TimeoutException : le délai d’expiration « 00 : 02:00 » a expiré lors de l’exécution de la fonction « WaitForMessage ». à Microsoft.Adapters.AdapterUtilities.TimeoutHelper.GetRemainingTimeoutAndThrowDefaultExceptionMessageIfExpired() à Microsoft.Adapters.OracleCommon.OracleCommonUtils.SetCommandTimeout (commande OracleCommand, TimeoutHelper timeoutHelper) à Microsoft.Adapters.OracleCommon.OracleCommonUtils.ExecuteScalar (OracleCommand commande, OracleCommonExecutionHelper executionHelper) à Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage () OracleCommonExecutionHelper executionHelper, OracleCommonConnectionWrapper connexion) à Microsoft.Adapters.OracleDB.OracleDBInboundContract.Polling_WaitForMessage (OracleCommonExecutionHelper executionHelper) à Microsoft.Adapters.OracleDB.OracleDBInboundContract.WaitForMessage (TimeSpan timeout) à Microsoft.ServiceModel.Channels.Common.Channels.AdapterInputChannel.WaitForMessage (expiration TimeSpan) à System.ServiceModel.Dispatcher.InputChannelBinder.WaitForMessage (TimeSpan timeout) à System.ServiceModel.Dispatcher.ErrorHandlingReceiver.WaitForMessage() ».

Cause


Ce problème se produit car l’emplacement de réception redémarre de façon inattendue lorsque la méthode WaitForMessage génère une exception TimeoutException . Lorsque la méthode WaitForMessage génère une exception TimeoutException se produit , la méthode TryReceive est appelée, et l’adaptateur WCF-SQL ou l’adaptateur WCF et Oracle restaure ensuite la transaction. Toutefois, l’opération de restauration peut générer une exception ObjectDisposedException . Par conséquent, un des avertissements qui sont mentionnés dans la section « Symptômes » est généré.

Résolution


Informations de mise à jour cumulative

Pour le Pack d’adaptateur BizTalk 2010

Le correctif qui résout ce problème est inclus dans le package de mise à jour cumulative 2 pour le Pack de l’adaptateur BizTalk 2010. 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 :2572999 package de mise à jour Cumulative 2 pour le Pack de l’adaptateur BizTalk 2010

Pour l’adaptateur BizTalk Pack 2.0

Le correctif qui résout ce problème est inclus dans le package de mise à jour cumulative 3 pour le Pack de l’adaptateur BizTalk 2.0. Pour plus d’informations sur la façon d’obtenir le package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
2557150 Package de mise à jour cumulative 3 pour le Pack de l’adaptateur BizTalk 2.0
RemarqueCe correctif logiciel ajoute l' < TraceIdentifier > et < / TraceIdentifier > les balises qui sont requis dans le fichier de suivi WCF (.svcLog). Une fois le correctif ajoute ces balises, la sortie dans les fichiers de suivi est corrigée, et outil Service Trace Viewer (SvcTraceViewer.exe) s’ouvre plus rapidement des fichiers volumineux de suivi WCF. Les éléments suivants :: sortie traces ne disposent pas de la < TraceIdentifier > et < / TraceIdentifier > balises avant d’appliquer ce correctif : < Description > ExecuteNonQuery::Exit < / Description >< Description > OpenConnection::Exit < / Description >< Description > ExecuteScalar::Exit < / Description >< Description > Polling_WaitForMessage::Exit < / Description >

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.

Informations supplémentaires


Pour plus d’informations sur la méthode IInputChannel.WaitForMessage , reportez-vous au site Web MSDN suivant :Pour plus d’informations sur la méthode IInputChannel.TryReceive , reportez-vous au site Web MSDN suivant :Pour plus d’informations sur les correctifs de BizTalk Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
2003907 Informations sur les correctifs de BizTalk Server