Symptômes
Supposons que vous activez les groupes de disponibilité AlwaysOn dans une instance de Microsoft SQL Server 2014. Vous effectuez un basculement de groupe de disponibilité alors que le réplica principal a des transactions actives. Ensuite, le message d’avertissement 3303 suivant s’affiche :
Remarque
Le renforcement à distance de la transaction ' %.*ls' (ID 0x %016I64x %ls) démarré à %S_DATE dans la base de données ' %ls' à LSN %S_LSN a échoué.
Dans ce cas, les pilotes ou fournisseurs de données suivants ne peuvent pas intercepter l’exception « Échec du renforcement à distance » :
- Pilote Microsoft JDBC pour SQL Server 4.0
- OLE DB Driver pour SQL Server
- Client natif SQL Server pour OLE DB
Par conséquent, l’application cliente qui utilise ces pilotes ou fournisseurs ne sait pas que la transaction est « douteuse ». Une transaction « in-doubt » signifie qu’elle a pu être validée et renforcée sur le disque avec succès, ou qu’elle est abandonnée et restaurée par SQL Server. Si cette transaction « douteuse » est annulée, ces pilotes ou fournisseurs peuvent toujours considérer la transaction comme validée avec succès car ils ne peuvent pas capturer l’exception. Cela peut entraîner un problème d’incohérence des données d’application.
Remarque Les fournisseurs de connexion suivants peuvent capturer l’exception « Échec de renforcement à distance » pour les transactions « en doute » :
- Pilote Microsoft ODBC pour SQL Server
- SQL Server Native Client (ODBC)
Résolution
Ce problème a été résolu pour la première fois dans la mise à jour cumulative suivante de SQL Server.
Mise à jour cumulative 5 pour SQL Server 2014 /en-us/help/3011055
À propos des mises à jour cumulatives pour SQL Server
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous 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 sur le correctif logicielCe correctif introduit un nouvel indicateur de trace 3923. L’indicateur de trace permet à SQL Server de lever une exception dans l’application lorsque le message d’avertissement 3303 est généré.
Après l’application du correctif logiciel, vous devez activer cet indicateur de trace pour résoudre ce problème. Avec le correctif et l’indicateur de trace, l’application doit également implémenter des codes de validation pour case activée si la transaction est restaurée ou validée après la capture de l’exception.
Un correctif logiciel pris en charge est disponible auprès de Microsoft. Toutefois, il est conçu uniquement pour corriger le problème décrit dans cet article. N’appliquez ce correctif qu’aux systèmes sur lesquels vous rencontrez ce problème.
Si le correctif logiciel est disponible en téléchargement, une section « Téléchargement de correctif logiciel disponible » figure en haut du présent article de la Base de connaissances. Si cette section est absente, demandez le correctif logiciel auprès du Support technique et Service clientèle Microsoft.
Remarque Si des problèmes supplémentaires surviennent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être créer une demande de service distincte. Les coûts habituels du support s'appliqueront aux autres questions et problèmes du support non directement liés au correctif logiciel en question. Pour obtenir la liste complète des numéros de téléphone des services d’assistance technique Microsoft ou pour créer une demande de service distincte, reportez-vous au site web de Microsoft à l’adresse suivante :
/contactus/ ?ws=support Remarque Le formulaire « Téléchargement de correctif logiciel disponible » affiche les langues pour lesquelles le correctif logiciel est disponible. Si votre langue n'est pas répertoriée, cela signifie qu'aucun correctif logiciel n'est disponible pour cette langue.
Exigence de redémarrageIl n’est pas obligatoire de redémarrer l’ordinateur après avoir appliqué ce correctif logiciel.
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».