Bogue : #50003826 (correctif SQL)
Microsoft distribue les correctifs de Microsoft SQL Server 2008 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 2008 de SQL Server version du correctif.
Symptômes
Dans SQL Server 2008, vous exécutez une requête qui insère des données dans une table temporaire. L’instruction insert contienne une sous-requête qui fait référence à la même table temporaire. Lorsque vous exécutez la requête, vous pouvez recevoir un message d’erreur semblable au suivant :
Msg 605, niveau 21, état 3, 1Attempt de ligne à extraire la page logique (1 : 225) dans la base de données 2 a échoué. Il appartient à l’allocation unité 281474980315136 et non 504403158513025024.
Si vous réexécutez la requête, vous recevez un message d’erreur semblable au suivant :
Msg 824, niveau 24, état 2, ligne 1
SQL Server a détecté une erreur d’e/s basée sur la cohérence logique : total de contrôle incorrect (attendu : 0x50758180 ; réel : 0x15658bfc). Il s’est produite lors de la lecture de la page (1 : 336) dans la base de données ID 2 au décalage 0x000000002a0000 dans le fichier ' C:\Program Files\Microsoft SQL Server\MSSQL10. SQL2008\MSSQL\DATA\tempdb.mdf'. Des messages supplémentaires dans le journal d’événements SQL Server erreur système ou le journal peuvent fournir plus de détails. Il s’agit d’une condition d’erreur sévère qui menace l’intégrité de la base de données et doit être corrigée immédiatement. Effectuer une vérification de cohérence de base de données complète (DBCC CHECKDB). Cette erreur peut être provoquée par de nombreux facteurs ; Pour plus d’informations, consultez la documentation en ligne de SQL Server.
Dans certains cas, vous pouvez également recevoir un message d’erreur semblable au suivant :
Msg 601, niveau 12, état 3, procédure pom, numéro de lignede la ligne n’a pas pu continuer l’analyse avec NOLOCK en raison du déplacement de données.
Une construction de requête possibles qui peut produire ces erreurs est la suivante :
insert #table1select s.col1, s.col2from #table2 s inner loop join #table1 t on s.col3 = t.col3
Résolution
Le correctif de ce problème a été publié dans 3 de mise à jour Cumulative. Pour plus d’informations sur l’obtention de ce package de mise à jour cumulative pour SQL Server 2008, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
960484 Package de mise à jour cumulative 3 pour SQL Server 2008Remarque 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 :
956909 Versions de la mise SQL Server 2008 publiées après SQL Server 2008 a étéAprès avoir installé ce package de mise à jour cumulative, vous devez activer l’indicateur de suivi 4135. Pour ce faire, vous pouvez ajouter la -T4135 paramètre de démarrage. Ou bien, vous pouvez utiliser l’instruction dbcc traceon (4135) pour une session spécifique.
Solution de contournement
Pour contourner ce problème, ajoutez une colonne qui possède à la fois une clé primaire en clusters et une propriété d’identité à la table temporaire. Par exemple, exécutez l’instruction suivante pour modifier la table temporaire :
ALTER TABLE #TempTableADD id integer IDENTITY(1,1) CONSTRAINT id PRIMARY KEY CLUSTERED
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
Bien que vous rencontrez le message d’erreur 824 ou 605, la base de données n’est pas endommagée. En outre, ces messages d’erreur référencent les pages de la base de données tempdb.Pour plus d’informations sur les fichiers sont modifiés et pour plus d’informations sur les conditions requises pour appliquer le package de mise à jour cumulative qui contient le correctif qui est décrit dans cet article de la Base de connaissances Microsoft, cliquez sur le numéro ci-dessous pour afficher les article de la Base de connaissances Microsoft :
960484 Package de mise à jour cumulative 3 pour SQL Server 2008
Informations sur le BPA de SQL Server 2008 R2
SQL Server 2008 R2 Best Practice Analyzer (BPA SQL Server 2008 R2) fournit une règle pour détecter des situations dans lesquelles vous n’avez pas la mise à jour cumulative ou l’indicateur de suivi activé pour résoudre ce problème. Le BPA de SQL Server 2008 R2 prend en charge à la fois SQL Server 2008 et SQL Server 2008 R2. Si vous exécutez l’outil BPA et rencontrez un « Database Engine - erreurs tempdb résolues ou indicateur de suivi manquant » d’avertissement, vous devez vérifier la version de SQL Server et les indicateurs de trace qui sont configurés pour activer ce correctif.
Références
Logiciel de règles |
Titre de la règle |
Identificateur de règle |
Règle BPA de SQL Server 2008 R2 |
erreurs tempdb résolues ou indicateur de suivi manquant |
RID3808 |
Remarque Vous pouvez activer l’indicateur de suivi 4135 ou 4199 pour activer ce correctif. Indicateur de suivi 4135 a été introduit dans le package de mise à jour Cumulative 3 pour SQL Server 2008. Indicateur de suivi 4135 est également disponible dans SQL Server 2008 Service Pack 1, dans SQL Server 2008 Service Pack 2 et dans SQL Server 2008 R2. L’indicateur de trace 4199 a été introduit dans le package de mise à jour Cumulative 7 pour SQL Server 2008, dans le package de mise à jour Cumulative 7 pour SQL Server 2008 Service Pack 1 et dans le package de mise à jour Cumulative 1 pour SQL Server 2008 R2. Pour plus d’informations sur l’indicateur de trace 4199, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
974006 L’indicateur de trace 4199 est ajouté au contrôle de plusieurs modifications d’optimiseur de requêtes effectuées auparavant selon plusieurs indicateurs de trace Étant donné que le correctif de ce problème implique la combinaison d’une version de correctif logiciel spécifique et d’un indicateur de trace pour activer le correctif, nous incluons la table suivante pour montrer les différents scénarios et les mesures recommandées à prendre pour chaque scénario.Pour plus d’informations sur les versions les plus récentes de SQL Server, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
957826 Où trouver des informations sur la dernière version de SQL Server construit
Références
Pour plus d’informations sur la liste des versions disponibles après la publication de SQL Server 2008, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
956909 Versions de la mise SQL Server 2008 publiées après SQL Server 2008 a été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ésPour 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 :
822499Nouveau schéma d’affectation de noms pour les packages de mise à jour logicielle de Microsoft SQL ServerPour 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 :
824684 Terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft