Simptomi
Pieņemiet, ka jūsu datorā ir lietota Microsoft SQL Server 2012 2. servisa pakotne (SP2). Jūs zvanāt uz cdc.fn_cdc_get_net_changes_<capture_instance> mainīt datu tveršanas (CDC) vaicājumu sp_executesql saglabātajā procedūrā, un tas var būt no lietojumprogrammas avota, piemēram, SQL Server Management Studio Server (SSMS), CDC vai SQL Server integrācijas pakalpojumu (SSIS) pakotnes. Šajā situācijā ir slikta veiktspēja programmā SQL Server 2012.Piezīme.Veiktspējas samazināšanās var būt liela. Piemēram, programmā SQL Server 2012 SP1 var pabeigt vaicājumu dažas sekundes. Taču tas pats vaicājums var ilgt vairākas stundas, lai palaistu SQL Server 2012 SP2. Turklāt statistikas atjauninājums nepalīdz atrisināt šo problēmu.
Cēlonis
Šī problēma rodas tāpēc, ka ir radusies problēma, veicot novērtējumu, kas būtiski ietekmē cdc.fn_cdc_get_net_changes_<capture_instance> vaicājuma veiktspēju.
Risinājums
Šī problēma pirmo reizi tika izlabota tālāk sniegtajā SQL Server kumulatīvajā atjauninājumā.
Kumulatīvais atjauninājums 3 SQL Server 2012 SP2 /en-us/help/3002049
Katrā jaunajā kumulatīvajā SQL Server atjauninājumā ir iekļauti visi labojumfaili un visi drošības labojumi, kas bija iekļauti iepriekšējā kumulatīvajā atjauninājumā. Skatiet jaunākos kumulatīvos atjauninājumus SQL Server:
Risinājums
Lai novērstu šo problēmu, vaicājumā izmantojiet opciju (Pārkompilējiet) vaicājuma atgādinājumu. Gadījumā, ja vaicājumu izraisa SSIS CDC komponenti, opciju (pārkompilēt) mājienu var būt spiests izveidot plānošanas rokasgrāmatu, kā parādīts tālāk esošajā piemērā: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)'; Piezīme.Piemēra vaicājums ir jāaizstāj ar vaicājumu, ar kuru saskaras. To var tvert no Profiler izsekošanas, līdz ar to nav nejauši pievienota papildu rakstzīme. Bez tam pārliecinieties, vai atlases vaicājums tiek ielikts vienā rindiņā (piemēram, tam nedrīkst būt neviena rakstatgriezes vai līnijas padeve), lai plāna rokasgrāmata varētu sekmīgi darboties. Iespējams, vajadzēs izmantot DBCC FREEPROCCACHE , lai izslēgtu veco plānu no kešatmiņas.
Statusa
Microsoft ir apstiprinājusi, ka šī problēma pastāv Microsoft produktos, kas ir norādīti sadaļā "attiecas uz".