Symptômes
Prenons le scénario suivant :
- Supposons que vous avez partitionné des tables dans Microsoft SQL Server et qu’elles font partie de l’Capture de modification des données (CDC) ou de la réplication transactionnelle. Vous basculez ou basculez une partition à partir de ces tables.
- Après le basculement de partition lorsque vous effectuez des opérations DML (Data Manipulation Language), vous pouvez remarquer qu’une EXCEPTION_ACCESS_VIOLATION se produit et qu’un fichier de vidage mémoire est généré.
Remarque
Date/heure ***Vidage de pile envoyé à FilePath\FileName
Date/heure SqlDumpExceptionHandler : ProcessID généré une exception irrécupérable c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server termine ce processus.
Date/Heure * *******************************************************************************
Date/heure *
Date/Heure * BEGIN STACK DUMP :
Date/heure *
Date/heure *
Date/heure *
Date/heure *
Date/Heure * Adresse de l’exception = 000007FEE724BD80 Module(sqllang+000000000015BBD80)
Date/Heure * Code d’exception = c0000005 EXCEPTION_ACCESS_VIOLATION
Date/Heure * Violation d’accès lors de la lecture de l’adresse 000000000000002A
Date/Heure * Mémoire tampon d’entrée 70 octets
Date/Heure * sys.sp_MScdc_capture_job
Date/heure *
Remarque
Date/heure ***Vidage de pile envoyé à FilePath\FileName
Date/heure SqlDumpExceptionHandler : exception irrécupérable générée par le PID de processus c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server termine ce processus.
Date/Heure * *******************************************************************************
Date/heure *
Date/Heure * BEGIN STACK DUMP :
Date/heure * Date/heureSPID
Date/heure *
Date/heure *
Date/Heure * Adresse de l’exception = 000007FEE9D26640 Module(sqllang+0000000001586640)
Date/Heure * Code d’exception = c0000005 EXCEPTION_ACCESS_VIOLATION
Date/Heure * Violation d’accès lors de la lecture de l’adresse 000000000000002A
Date/Heure * Mémoire tampon d’entrée 109 octets -
Date/Heure * 16 00 00 00 12 00 00 00 02 00 00 00 00 00 00 00 00 00 00
Date/Heure * s p _ r e p 01 00 00 00 00 0b 00 73 00 70 00 5f 00 72 00 65 00 70 00
Date/Heure * l c m d s & ô 6c 00 63 00 6d 00 64 00 73 00 00 00 00 00 26 04 04 f4
Date/Heure * & & 1 00 00 00 00 26 04 04 00 00 00 00 00 00 00 26 04 04 ff
Date/Heure * Conquea & ff ff ff 00 00 a5 0a 00 00 00 00 00 26 04 04 8f 13 00
Date/Heure * & & 00 00 00 26 04 00 00 00 00 00 00 00 26 04 04 20 a1 07
Date/Heure * 00
- Si vous exécutez la requête suivante sur la table de destination, vous remarquerez peut-être que la valeur de la colonne is_replicated sera marquée comme « 1 » pour l’index non cluster, ce qui n’est pas correct.
select index_id, partition_number,* from sys.system_internals_partition_columns pc with(nolock)
JOIN sys.partitions p with(nolock)
ON p.partition_id = pc.partition_id
where p.object_id = object_id ('PartitionTable')
order by 2
Résolution
Ce problème est résolu dans les mises à jour cumulatives suivantes pour SQL Server :
Mise à jour cumulative 1 pour SQL Server 2017
Mise à jour cumulative 5 pour SQL Server 2016 SP1
Mise à jour cumulative 8 pour SQL Server 2014 SP2
À 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 :
Dernière mise à jour cumulative pour SQL Server 2017
Dernière mise à jour cumulative pour SQL Server 2016
Dernière mise à jour cumulative pour SQL Server 2014
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Références
En savoir plus à propos de la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.