Microsoft distribue les correctifs Microsoft SQL Server 2008 Service Pack 3 (SP3) ou Microsoft SQL Server 2008 R2 comme un fichier téléchargeable. Dans la mesure où les correctifs sont cumulatifs, chaque nouvelle version contient tous les correctifs et toutes les mises à jour de sécurité qui ont été incluses dans les versions antérieures de SQL Server 2008 SP3 ou SQL Server 2008 R2.
Symptômes
Prenons l’exemple du scénario suivant :
-
Vous pouvez créer des partitions pour une table dans SQL Server 2008 ou SQL Server 2008 R2.
-
Vous n’activez pas la compression sur toutes les partitions.
-
Vous essayez d’insérer un enregistrement dans une nouvelle partition vide.
Dans ce scénario, une violation d’accès se produit et le message d’erreur suivant est consigné dans le journal des erreurs SQL Server :
<Date> <Time> spid## ***Stack Dump being sent to C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\LOG\SQLDump0001.txt<Date> <Time> spid## SqlDumpExceptionHandler: Process 66 generated fatal exception c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server is terminating this process.<Date> <Time> spid## * BEGIN STACK DUMP:<Date> <Time> spid## * Exception Address = 0000000000C37D22 Module(sqlservr+0000000000137D22)<Date> <Time> spid## * Exception Code = c0000005 EXCEPTION_ACCESS_VIOLATION<Date> <Time> spid## * Access Violation occurred reading address 0000000000000020
Remarque Ce problème survient également dans Microsoft SQL Server 2008 R2.
Résolution
Informations sur les mises à jour cumulatives
SQL Server 2008 Service Pack 2
Le correctif de ce problème a été émis pour la première fois dans la mise à jour cumulative 8 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 consulter l’article de la base de connaissances Microsoft :
2648096 Package de mise à jour cumulative 8 pour SQL Server 2008 Service Pack 2Remarque Dans la mesure où les builds sont cumulatives, chaque nouvelle version du correctif contient tous les correctifs et les correctifs de sécurité inclus dans l’ancienne version du correctif SQL Server 2008. Microsoft vous recommande d’appliquer la version de correctif la plus récente qui contient 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 Builds SQL Server 2008 publiées après la sortie de SQL Server 2008 Service Pack 2 Des correctifs Microsoft SQL Server 2008 sont créés pour des service packs SQL Server spécifiques. Vous devez appliquer un correctif SQL Server 2008 Service Pack 2 à une installation de SQL Server 2008 Service Pack 2. Par défaut, tout correctif fourni dans un service pack SQL Server est inclus dans le prochain Service Pack SQL Server.
SQL Server 2008 R2
Le correctif de ce problème a été émis pour la première fois dans la mise à jour cumulative 11. Pour plus d’informations sur la façon d’obtenir ce package de mise à jour cumulative pour SQL Server 2008 R2, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
2633145 Package de mise à jour cumulative 11 pour SQL Server 2008 R2 Remarque Dans la mesure où les builds sont cumulatives, chaque nouvelle version du correctif contient tous les correctifs et les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2008 R2. Nous vous recommandons d’appliquer la version de correctif la plus récente qui contient 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 Builds SQL Server 2008 R2 publiées après la sortie de SQL Server 2008 R2
SQL Server 2008 R2 Service Pack 1
Le correctif de ce problème a été émis pour la première fois dans la mise à jour cumulative 4 pour SQL Server 2008 R2 Service Pack 1. Pour plus d’informations sur la façon d’obtenir ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
2633146 Package de mise à jour cumulative 4 pour SQL Server 2008 R2 Service Pack 1Remarque Dans la mesure où les builds sont cumulatives, chaque nouvelle version du correctif contient tous les correctifs et les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2008 R2. Nous vous recommandons d’appliquer la version de correctif la plus récente qui contient ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2567616 Builds SQL Server 2008 R2 publiées après la sortie de SQL Server 2008 R2 Service Pack 1
SQL Server 2008 Service Pack 3
Le correctif de ce problème a été émis pour la première fois dans le package de mise à jour cumulative 2 pour SQL Server 2008 Service Pack 3. Pour plus d’informations sur la façon d’obtenir ce package de mise à jour cumulative pour SQL Server 2008 Service Pack 3, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
2633143 Package de mise à jour cumulative 2 pour SQL Server 2008 Service Pack 3Remarque Dans la mesure où les builds sont cumulatives, chaque nouvelle version de mise à jour contient tous les correctifs et toutes les mises à jour de sécurité qui ont été incluses dans la version de mise à jour précédente SQL Server 2008 Service Pack 3. Nous vous recommandons d’appliquer la version la plus récente de la mise à jour qui contient ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2629969 Builds SQL Server 2008 publiées après la sortie de SQL Server 2008 Service Pack 3
Informations supplémentaires
Pour vérifier que vous rencontrez le problème décrit dans cet article de la base de connaissances, procédez comme suit :
-
Ouvrez une connexion DAC à SQL Server, puis exécutez la requête suivante :
Use <your_db_name>select * from sys.sysrscols rsc where rsc.rsid in ( select sau.container_idfrom sys.system_internals_allocation_units sau join sys.partitions pt on sau.container_id = pt.partition_idand pt.object_id = object_id(<YourPartitionedTable>) and pt.index_id = 1)
Remarque Dans cette requête, <> YourPartitionedTable est un espace réservé pour le nom de votre table de partitions.
-
Dans la sortie de la requête, vérifiez si la colonne rscolid contient une valeur importante. Voici un exemple d’une telle valeur importante :
rsid
rscolid
hbcolid
rcmodified
TI
confirmation
ordkey m
72057594380091392
0
1
614911578
56
0
n°4
72057594380091392
27,9
n°13
614911578
12967
53265
0
72057594380091392
midi
13
614911578
32999
53265
0
72057594380091392
n°13
0,15
614911578
32999
53265
0
72057594380091392
13
Seiz
614911578
59
0
0
72057594380091392
0,15
Play
614911578
59
0
0
72057594380091392
Play
19
614911578
1834
0
0
72057594380091392
67108865
19,6
614911578
19627
53625
0
72057594380091392
22
23
614911578
56
0
0
72057594380091392
23
24
614911578
10407
53625
0
72057594380091392
24
1,25
614911578
662636
0
0
Dans cet exemple, la valeur de 67108865 est beaucoup plus grande que d’autres. Cela indique que vous rencontrez le problème décrit dans cet article de la base de connaissances.
Pour contourner ce problème, recréez les partitions affectées. Veuillez contacter le support technique de Microsoft pour en savoir plus sur les partitions impliquées. Vous pouvez ou régénérer toutes les partitions en utilisant la requête suivante :
ALTER INDEX <your_table_index>ON <your_table_name>REBUILD Partition = allGO
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.