Simptome
Luați în considerare următorul scenariu:
-
Să presupunem că ați partiționat tabele în Microsoft SQL Server și că acestea fac parte din Change Data Capture (CDC) sau Transactional Replication. Comutați partiția de la aceste tabele sau de la o partiție de ieșire.
-
După comutarea partițiilor atunci când efectuați operațiuni DML (Data Manipulation Language), este posibil să observați că are loc o EXCEPTION_ACCESS_VIOLATION și este generat un fișier dump de memorie.
Dată/Oră ***Dump stivă fiind trimis la FilePath\FileName
Data/Ora SqlDumpExceptionHandler: ProcessID a generat excepția fatală generată EXCEPTION_ACCESS_VIOLATION. SQL Server termină acest proces.
Data/Ora * ****************
Data/Ora *
ÎNCEPEȚI DUMP STIVA:
Data/Ora *
Data/Ora *
Data/Ora *Data/Ora *
Data/Ora * Data/Ora *
Data/Ora * Data/Ora * Excepție Adresă = 000007FEE724BD80 Module(sqllang+00000000015BBD80)
Dată/Oră * Cod excepție = c0000005 EXCEPTION_ACCESS_VIOLATION
Data/Ora * Violare acces a avut loc la citirea adresei 00000000000002A
Data/Ora * Tamponul de intrare 70 byți
Data/Ora * sys.sp_MScdc_capture_job
Data/Ora *
Dată/Oră ***Dump stivă trimis la FilePath\FileName
Data/Ora SqlDumpExceptionHandler: Se procesează excepția fatală generată de PID c0000005 EXCEPTION_ACCESS_VIOLATION. SQL Server termină acest proces.
Dată/Oră * *************
Data/Ora *
Data/Ora ÎNCEPE DUMP STIVA:
Data/Ora * Data/Ora SPIDData/Ora */Ora/Data/Ora SPID
Dată/Oră *
Dată/Oră * Adresă excepție = 000007FEE9D26640 Module(sqllang+0000000001586640)
Dată/Oră * Cod excepție = c0000005 EXCEPTION_ACCESS_VIOLATION
Data/Ora * Încălcarea accesului a avut loc la citirea adresei 0000000000002A
Data/Ora * Tampon de intrare 109 byți -
Data/Ora * 16 00 00 00 12 00 00 00 00 00 00 00 00 00 00 00Data/ 00
Time * s p _ r e p 01 00 00 0b 00 73 00 70 00 5f 00 72 00 65 00 70 00
Date/Time * l m d s & ô 6c 00 63 00 6d 00 64 00 73 00 00 00 00 26 04 04
Data/Ora * & & ÿ 01 00 00 00 00 00 0 26 04 04 00 00 00 00 00 26 04 04 ff
Data/Ora * ÿÿÿ ¥ & ff ff ff 00 00 a5 0a 00 00 00 00 26 04 04 8f 13 00
Data /Timp * & & )* 00 00 00 26 04 04 00 00 00 00 00 26 04 04 20 a1 07
Dată/Oră * 00
-
Dacă rulați următoarea interogare în raport cu tabelul destinație, este posibil să observați că valoarea coloanei is_replicated va fi marcată ca "1" pentru indexul non-grupat, care nu este corect.
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
Rezolvare
Această problemă este remediată în următoarele actualizări cumulative pentru SQL Server:
Actualizarea cumulativă 1 pentru SQL Server 2017
Fiecare actualizare cumulativă nouă pentru SQL Server conține toate remedierile rapide și toate remedierile de securitate care au fost incluse în actualizarea cumulativă anterioară. Consultați cele mai recente actualizări cumulative pentru SQL Server:
Cea mai recentă actualizare cumulativă pentru SQL Server 2017
Cea mai recentă actualizare cumulativă pentru SQL Server 2016
Cea mai recentă actualizare cumulativă pentru SQL Server 2014
Stare
Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea „Se aplică la”.
Referințe
Aflați despre terminologiape care o utilizează Microsoft pentru a descrie actualizările de software.