Příznaky
Předpokládejme, že jste na počítači použili aktualizaci Microsoft SQL Server 2012 Service Pack 2 (SP2). Zavoláte cdc.fn_cdc_get_net_changes_<capture_instance> příkaz change data zachytávation (CDC) v uložené proceduře sp_executesql a může považovat ze zdroje aplikací, jako je SQL Server Management Studio Server (SSMS), samotného CDC nebo balíčků služby SQL Server Integration Services (SSIS). V tomto případě dochází k slabému výkonu SQL serveru 2012.PoznámkaPokles výkonu může být velký. V systému SQL Server 2012 SP1 může být třeba dokončit během několika sekund. Spuštění jednoho dotazu v SQL serveru 2012 SP2 však může trvat několik hodin. Aktualizace statistiky navíc nepomáhá s tímto problémem.
Příčina
K tomuto problému dochází kvůli problému s odhadem mohutnosti, který značně ovlivňuje výkon cdc.fn_cdc_get_net_changes_<capture_instance> dotazu.
Řešení
Tento problém byl poprvé opraven následující kumulativní aktualizací SQL serveru.
Kumulativní aktualizace 3 pro SQL Server 2012 SP2 /en-us/help/3002049
Každá nová kumulativní aktualizace pro SQL Server obsahuje všechny opravy hotfix a všechny opravy zabezpečení, které byly součástí předchozí kumulativní aktualizace. Podívejte se na nejnovější kumulativní aktualizace SQL serveru:
Alternativní řešení
Tento problém vyřešíte pomocí nápovědy Možnosti dotazu (RECOMPILE) v dotazu. V případě, že se dotaz spouští ze součástí SSIS CDC, může být průvodcem (RECOMPILE) vynucený vytvořením průvodce plánem, jako v následujícím příkladu: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)'; PoznámkaPříklad dotazu je třeba nahradit dotazem, který vám vystavil. Může být převzata z trasování profileru , takže nebude omylem přidáno žádné další znaky. Navíc se ujistěte, že je výběrový dotaz uložený na jednom řádku (například by neměl mít žádnou návratnou čáru), aby průvodce plánem fungoval úspěšně. Je také možné, že budete muset pomocí příkazu DBCC FREEPROCCACHE vyseknout starý plán z mezipaměti.
Stav
Společnost Microsoft potvrzuje, že se jedná o problém v produktech této společnosti, které jsou uvedeny v části Informace v tomto článku jsou určeny pro produkt.