CORRECTIF : message d’erreur « une assertion système check a échoué » lorsque vous exécutez une requête de Transaction-SQL dans Microsoft SQL Server 2008 ou Microsoft SQL Server 2008 R2


Microsoft distribue Microsoft SQL Server 2008 et 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 SQL Server 2008 ou SQL Server 2008 R2 version du correctif.

Symptômes


Lorsque vous exécutez une requête de Transaction-SQL dans Microsoft SQL Server 2008 ou dans SQL Server 2008 R2, vous notez les problèmes suivants :
  • Vous recevez un message d’erreur semblable au suivant :
    Emplacement : e:\sql10_katmai_t\sql\ntdbms\storeng\dfs\access\sebind.h:1139

    Expression : bufferLen > = longueur de colonne

    SPID : <SPID>

    ID de processus : <ProcessID>

    Msg 3624, niveau 20, état 1, ligne 2

    Un contrôle d’assertion a échoué. Vérifiez le journal des erreurs SQL Server pour plus d’informations. 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.

    Msg 0, niveau 20, état 0, ligne 0

    Une erreur grave s’est produite sur la commande actuelle. Les résultats, le cas échéant, doivent être ignorés.
  • Un message d’erreur semblable au suivant est enregistré dans le journal des erreurs de SQL Server :
    <Heure> spid <ID> utilisation 'de dbghelp.dll' version '4.0.5'

    Le spid <Heure> <ID> ** thread de vidage - spid = 0, EC = 0x0000000086DC00F0

    Le spid <Heure> <ID> *** vidage de pile envoyé vers C:\Program Files\Microsoft SQL Server\MSSQL10. MSSQLSERVER\MSSQL\LOG \SQLDump0001.txt

    <Date Time> spid<ID> * *******************************************************************************

    Le spid <Heure> <ID> *

    Le spid <Heure> <ID> * commencer le vidage de pile :

    Le spid <Heure> <ID> * <Heure> spid <ID>

    Le spid <Heure> <ID> *

    le spid < heure > < ID > * emplacement : e:\sql10_katmai_t\sql\ntdbms\storeng\dfs\access\sebind.h:1139

    le spid < heure > < ID > * Expression : bufferLen > = longueur de colonne

    le spid < heure > < ID > * SPID : < SPID >

    le spid < heure > < ID > * ID de processus : < ProcessID >

    le spid < heure > < ID > *

    le spid < heure > < ID > * octets de 264 du tampon d’entrée :

    le spid < heure > < ID > * sélectionnez * à partir de l’interne de O t1 join t2 T sur O.id = T.id et O.tit

    le spid < heure > < ID > * le = ordre de T.title par O.id, O.title, option (jointure de boucle)

    le spid < heure > < ID > *

    ... ...

    ... ... le spid < heure > < ID > erreur : 17066, gravité : 16, état : 1.

    le spid < heure > < ID > Assertion de SQL Server : fichier : < e:\sql10_katmai_t\sql\ntdbms\storeng\dfs\access\sebind.h >, ligne = 1139 Échec de l’Assertion = ' bufferLen > = longueur de colonne ». 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 que les structures de données en mémoire ne sont pas corrompues.

    le spid < heure > < ID > erreur : 3624, gravité : 20, état : 1.

    spid < heure > < ID >

    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.
  • Un fichier de minividage est généré dans le dossier qui contient les journaux d’erreurs de SQL Server.
Ces problèmes se produisent lorsque les conditions suivantes sont remplies :
  • La requête obtient des données à partir de deux ou plusieurs tables à l’aide de l’instruction de jointure .
  • Une des tables avec la compression de données activée.
  • Dans le tableau, vous avez une clé d’index ordonné en clusters sur une colonne.
  • La colonne fait référence à des colonnes d’autres tables qui ont des longueurs différentes.
  • La colonne est utilisée dans le filtre.
  • La requête utilise l’indicateur de jointure LOOP JOIN , ou de SQL Server exécute une opération qui utilise l’indicateur de jointure LOOP JOIN .

Cause


Le problème se produit parce que la longueur des données de la clé est supérieure à la longueur de la mémoire tampon de valeur de clé compressé.

Résolution


Informations de mise à jour cumulative

SQL Server 2008 Service Pack 1

Le correctif de ce problème a été publié dans les 9 mise à jour Cumulative 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 :
2083921 mise à jour cumulative 9 pour SQL Server 2008 Service Pack 1
Remarque Les versions étant cumulatives, chaque nouvelle version du correctif contient tous les correctifs et correctifs de sécurité inclus dans la précédente version du correctif de SQL Server 2008. Microsoft vous recommande 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 :
970365 the SQL Server versions 2008 publiées après SQL Server 2008 Service Pack 1
Les correctifs Microsoft SQL Server 2008 sont créés pour les packs de service spécifiques de SQL Server. Vous devez appliquer un correctif SQL Server 2008 Service Pack 1 dans une installation de SQL Server 2008 Service Pack 1. Par défaut, tout correctif qui est fourni dans un service pack de SQL Server est inclus dans le prochain service pack de SQL Server.

SQL Server 2008 Service Pack 2

Le correctif de ce problème a été publié dans à jour Cumulative 1 pour SQL Server 2008 Service Pack 2. 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 :
2289254 Cumulative mise à jour 1 pour Microsoft SQL Server 2008 Service Pack 2
Remarque Les versions étant cumulatives, chaque nouvelle version du correctif contient tous les correctifs et correctifs de sécurité inclus dans la précédente version du correctif de SQL Server 2008. 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 :
2402659 the SQL Server versions 2008 publiées après SQL Server 2008 Service Pack 2

SQL Server 2008 R2

Le correctif de ce problème a été publié dans les 4 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 :
2345451 package de mises à jour cumulatives 4 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 le SQL Server versions 2008 R2 publiées après SQL Server 2008 R2

Informations sur le correctif

Un correctif pris en charge est disponible auprès de Microsoft. Toutefois, ce correctif vise à corriger uniquement le problème décrit dans cet article. Appliquez ce correctif uniquement aux systèmes rencontrant ce problème spécifique.

Si le correctif est disponible pour le téléchargement, il existe une section « Téléchargement de correctif logiciel disponible » au début de cet article de la Base de connaissances. Si cette section n’apparaît pas, soumettez une demande au Service Clients et Support de Microsoft pour obtenir le correctif.

Remarque Si des problèmes supplémentaires se produisent ou si des procédures de dépannage sont nécessaires, vous devrez peut-être formuler une demande de service distincte. Les coûts habituels du support technique s'appliqueront aux questions et problèmes qui ne relèvent pas de ce correctif logiciel. Pour une liste complète des numéros de téléphone service clientèle de Microsoft ou pour créer une demande de service distincte, visitez le site Web Microsoft suivant :Remarque Le formulaire « Téléchargement de correctif logiciel disponible » affiche les langues pour lesquelles le correctif est disponible. Si vous ne voyez pas votre langue, c'est parce qu'il n'y a pas de correctif disponible pour cette langue.

Conditions préalables

Vous devez disposer de SQL Server 2008 Service Pack 1 pour appliquer ce correctif.

Informations sur le redémarrage

Vous n’êtes pas obligé de redémarrer l’ordinateur après avoir appliqué ce correctif.

Informations concernant le Registre

Vous n’êtes pas obligé de modifier le Registre après avoir appliqué ce correctif.

Informations sur les fichiers


La version anglaise de ce correctif dispose des attributs de fichier (ou version ultérieure) répertoriés dans le tableau suivant. Les dates et heures de ces fichiers sont répertoriées en temps universel coordonné (UTC). Lorsque vous affichez les informations de fichier, elles sont converties en heure locale. Pour trouver la différence entre l’UTC et l’heure locale, utilisez la
Fuseau horaire
onglet dans le
Date et heure
élément dans le panneau de configuration.

SQL Server 2008, version 32 bits
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Databasemailengine.dll10.0.2781.075,62407-Jun-201003:45x86
Databasemailprotocols.dll10.0.2781.042,85607-Jun-201003:45x86
Instmdw.sqlNe s'applique pas469,80605-Jun-201000:40Ne s'applique pas
Instmsdb.sqlNe s'applique pas1,676,51804-Jun-201021:02Ne s'applique pas
Mssqlsystemresource.ldfNe s'applique pas524 28805-Jun-201003:36Ne s'applique pas
Mssqlsystemresource.mdfNe s'applique pas63,307,77605-Jun-201003:36Ne s'applique pas
Queryactivityupload.dtsxNe s'applique pas680,10705-Jun-201000:40Ne s'applique pas
Sql_engine_core_inst_keyfile.dll2007.100.2781.013,67207-Jun-201004:26x86
Sqlaccess.dll2007.100.2781.0405,35207-Jun-201005:32x86
Sqlagent.exe2007.100.2781.0367,46407-Jun-201005:32x86
Sqlagent100_msdb_upgrade.sqlNe s'applique pas1,790,63905-Jun-201000:21Ne s'applique pas
Sqlctr100.dll2007.100.2781.072,55207-Jun-201005:32x86
Sqlscriptdowngrade.dll2007.100.2781.014,69607-Jun-201005:33x86
Sqlscriptupgrade.dll2007.100.2781.03,380,07207-Jun-201005:33x86
Sqlservr.exe2007.100.2781.042,745,19207-Jun-201005:33x86
Sqsrvres.dll2007.100.2781.089,96007-Jun-201005:33x86
Xpstar.dll2007.100.2781.0300,90407-Jun-201005:36x86
SQL Server 2008, version basée sur les x64
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Databasemailengine.dll10.0.2781.075,62406-Jun-201004:15x86
Databasemailprotocols.dll10.0.2781.042,85606-Jun-201004:15x86
Instmdw.sqlNe s'applique pas469,80605-Jun-201000:40Ne s'applique pas
Instmsdb.sqlNe s'applique pas1,676,51804-Jun-201021:02Ne s'applique pas
Mssqlsystemresource.ldfNe s'applique pas524 28805-Jun-201003:36Ne s'applique pas
Mssqlsystemresource.mdfNe s'applique pas63,307,77605-Jun-201003:36Ne s'applique pas
Queryactivityupload.dtsxNe s'applique pas680,10705-Jun-201000:40Ne s'applique pas
Sql_engine_core_inst_keyfile.dll2007.100.2781.014,18406-Jun-201004:36x64
Sqlaccess.dll2007.100.2781.0412,00806-Jun-201005:16x86
Sqlagent.exe2007.100.2781.0427,88006-Jun-201005:16x64
Sqlagent100_msdb_upgrade.sqlNe s'applique pas1,790,63905-Jun-201000:21Ne s'applique pas
Sqlctr100.dll2007.100.2781.0108,39206-Jun-201005:16x64
Sqlctr100.dll2007.100.2781.072,55207-Jun-201005:32x86
Sqlscriptdowngrade.dll2007.100.2781.015,72006-Jun-201005:18x64
Sqlscriptupgrade.dll2007.100.2781.03,379,56006-Jun-201005:18x64
Sqlservr.exe2007.100.2781.057,893,22406-Jun-201005:18x64
Sqsrvres.dll2007.100.2781.0105,83206-Jun-201005:18x64
Xpstar.dll2007.100.2781.0546,66406-Jun-201005:19x64
SQL Server 2008, version d’architecture Itanium
Nom de fichierVersion de fichierTaille du fichierDateHeurePlateforme
Databasemailengine.dll10.0.2781.075,62406-Jun-201012:33x86
Databasemailprotocols.dll10.0.2781.042,85606-Jun-201012:33x86
Instmdw.sqlNe s'applique pas469,80605-Jun-201000:40Ne s'applique pas
Instmsdb.sqlNe s'applique pas1,676,51804-Jun-201021:02Ne s'applique pas
Mssqlsystemresource.ldfNe s'applique pas524 28805-Jun-201003:36Ne s'applique pas
Mssqlsystemresource.mdfNe s'applique pas63,307,77605-Jun-201003:36Ne s'applique pas
Queryactivityupload.dtsxNe s'applique pas680,10705-Jun-201000:40Ne s'applique pas
Sql_engine_core_inst_keyfile.dll2007.100.2781.019,30406-Jun-201012:53IA-64
Sqlaccess.dll2007.100.2781.0398,69606-Jun-201013:33x86
Sqlagent.exe2007.100.2781.01,203,04806-Jun-201013:33IA-64
Sqlagent100_msdb_upgrade.sqlNe s'applique pas1,790,63905-Jun-201000:21Ne s'applique pas
Sqlctr100.dll2007.100.2781.0135,01606-Jun-201013:33IA-64
Sqlctr100.dll2007.100.2781.072,55207-Jun-201005:32x86
Sqlscriptdowngrade.dll2007.100.2781.020,84006-Jun-201013:35IA-64
Sqlscriptupgrade.dll2007.100.2781.03,385,70406-Jun-201013:35IA-64
Sqlservr.exe2007.100.2781.0111,051,11206-Jun-201013:35IA-64
Sqsrvres.dll2007.100.2781.0187,75206-Jun-201013:35IA-64
Xpstar.dll2007.100.2781.0936,80806-Jun-201013:36IA-64

État


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

Plus d'informations


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 :

935897 Un modèle de service incrémentiel est disponible auprès de l’équipe SQL Server pour proposer des correctifs pour les problèmes signalés


Pour plus d’informations sur le schéma d’appellation des mises à jour de SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :

822499 Nouveau schéma d’affectation de noms pour les packages de mise à jour logicielle de Microsoft SQL Server

Pour plus d'informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
Description 824684 terminologie standard utilisée pour décrire les mises à jour logicielles de Microsoft