Simptomai
Tarkime, kad pritaikėte "Microsoft SQL Server" 2012 2 pakeitimų paketą (SP2) savo kompiuteryje. Skambinate cdc.fn_cdc_get_net_changes_<capture_instance> keisti duomenų fiksavimo (cdc) užklausą į sp_executesql saugomą procedūrą, ir ji gali būti iš taikomosios programos šaltinio, pvz., SQL serverio Management Studio serverio (SSMS), "CDC" arba "SQL Server" integravimo tarnybų (SSIS) paketų. Esant tokiai situacijai, "SQL Server 2012" patiria prastą veikimą.Pastaba. Našumo sumažėjimas gali būti didžiulis. Pvz., užklausa gali būti baigta per kelias sekundes "SQL Server" 2012 SP1. Tačiau ta pati užklausa gali užtrukti kelias valandas, kad paleistumėte "SQL Server" 2012 SP2. Be to, statistikos naujinimas nepadeda išspręsti problemos.
Priežastis
Ši problema kyla dėl "Cardinality" vertinimo problemos, kuri labai įtakoja cdc.fn_cdc_get_net_changes_<capture_instance> užklausos veikimą.
Sprendimas
Problema pirmą kartą buvo išspręsta šį kaupiamąjį naujinimą SQL serverio.
Kaupiamasis naujinimas 3 SQL serverio 2012 SP2 /en-us/help/3002049
Kiekvienas naujas Kaupiamasis naujinimas, skirtas "SQL Server", yra visos karštosios pataisos ir visos saugos pataisos, kurios buvo pridėtos prie ankstesnio kaupiamojo naujinimo. Peržiūrėkite naujausius kaupiamuosius SQL serverio naujinimus:
Sprendimas
Norėdami išspręsti šią problemą, užklausoje naudokite parinktį (perkompiliuoti) užklausos užuominą. Jei užklausa suaktyvinama iš SSIS CDC komponentų, parinktis (perkompiliuoti) užuominas gali būti priversta sukurti plano vadovą, kaip parodyta toliau pateiktame pavyzdyje: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)'; Pastaba. Jūs turite pakeisti pavyzdinę užklausą užklausa, su kuria susidūrėte. Jį galima griebti iš Profiler sekimo, todėl joks papildomas simbolis netyčia neįtraukiamas. Be to, įsitikinkite, kad pasirinkimo užklausa yra vienoje eilutėje (pvz., ji neturi jokio atgalinio perdavimo arba eilutės informacijos santraukos), kad planavimo vadovas galėtų sėkmingai dirbti. Jums taip pat gali tekti naudoti DBCC FREEPROCCACHE , kad būtų numušti senas planas iš talpyklos.
Statusą
"Microsoft" patvirtino, kad tai yra "Microsoft" produktų, išvardytų skyriuje "taikoma", problema.