KB4039089 - CORRECTIF : erreur EXCEPTION_ACCESS_VIOLATION lorsque vous exécutez la procédure stockée sys.sp_MScdc_capture_job dans SQL Server

S’applique à
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2017 on Windows (all editions) SQL Server 2017 on Linux (all editions) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

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.