Simptomi
Pretpostavimo da ste na računar primenili Microsoft SQL Server 2012 servisni paket 2 (SP2). Upit cdc.fn_cdc_get_net_changes_<capture_instance> Change Data Capture (CDC) pozivate u uskladištenoj proceduri sp_executesql, a on može da potiиe iz izvora aplikacije kao љto su SQL Server Management Studio Server (SSMS), sam CDC ili SQL Server Integration Services (SSIS) paketi. U ovoj situaciji dolazi do loših performansi u sistemu SQL Server 2012.Napomena Smanjenje performansi moglo bi da bude veliko. Na primer, upit može da se završi za nekoliko sekundi u SQL Server 2012 SP1. Međutim, istom upitu može biti potrebno nekoliko sati da se pokrene u SQL Server 2012 SP2. Pored toga, ažuriranje statistike ne pomaže u rešavanju problema.
Uzrok
Do ovog problema dolazi zbog problema u proceni kardinalnosti koji ozbiljno utiče na performanse cdc.fn_cdc_get_net_changes_<capture_instance> upita.
Rešenje
Problem je prvi put otklonjen u sledećoj kumulativnoj ispravki sistema SQL Server.
Kumulativna ispravka 3 za SQL Server 2012 SP2 /en-us/help/3002049
Svaka nova kumulativna ispravka za SQL Server sadrži sve hitne ispravke i sve bezbednosne ispravke koje su bile uključene u prethodnu kumulativnu ispravku. Pogledajte najnovije kumulativne ispravke za SQL Server:
Rešenje
Da biste zaobišli ovaj problem, koristite podsetnik za upit "Opcija (ponovo nadmećuj" u upitu. U slučaju da je upit aktiviran iz SSIS CDC komponenti, podsetnik opcije (ponovo izvrši) može biti primoran kreiranjem vodiča za plan kao u sledećem primeru:Exec sp_create_plan_guide @name = N'CDC_Query1_PlanGuide', @stmt = N'select [__$start_lsn],[__$operation],[__$update_mask],[Column1],[Column2],[Column3] from [cdc].[fn_cdc_get_net_changes_dbo_Table1](CONVERT(binary(10), @cs, 1), CONVERT(binary(10), @ce, 1), @mode)',@type = N'SQL',@module_or_batch = NULL, @params = N'@ce nvarchar(22),@mode nvarchar(14),@cs nvarchar(22)', @hints = N'OPTION (RECOMPILE)'; Napomena Primer upita morate da zamenite upitom sa kojim se suočavate. Može se zgrabiti iz praćenja profajlera, tako da nijedan dodatni znak nije slučajno dodat. Pored toga, uverite se da je upit SELECT stavljen u jedan red (na primer, ne bi trebalo da ima povratnu kočiju ili feed sa linijom) kako bi vodič za plan mogao uspešno da funkcioniše. Možda ćete morati da koristite i DBCC FREEPROCCACHE da biste oborili stari plan iz keša.
Status
Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku "Odnosi se na".