Príznaky
Predpokladajme, že ste v počítači použili Microsoft SQL Server 2012 Service Pack 2 (SP2). Zavoláte na cdc.fn_cdc_get_net_changes_<capture_instance> zmena údajov (cdc) dotaz v sp_executesql uložená procedúra a môže pochádzať zo zdroja aplikácie, ako je napríklad SQL Server Management Studio server (SSMS), CDC samotné alebo balíky služby SQL Server Integration Services (SSIS). V tejto situácii sa vyskytuje slabý výkon v SQL Server 2012.Poznámka: Zníženie výkonu môže byť veľké. Dotaz môže napríklad skončiť v priebehu niekoľkých sekúnd v SQL Server 2012 SP1. Rovnaký dotaz však môže trvať niekoľko hodín, kým sa spustí SQL Server 2012 SP2. Okrem toho aktualizácia štatistiky nepomôže s problémom.
Príčina
Tento problém sa vyskytuje z dôvodu problému v odhade Kardinálnosti, ktorý vážne ovplyvňuje výkon cdc.fn_cdc_get_net_changes_<capture_instance> dotaze.
Riešenie
Tento problém bol najskôr vyriešený v nasledujúcej kumulatívnej aktualizácii SQL servera.
Kumulatívna aktualizácia 3 pre SQL Server 2012 SP2 /en-us/help/3002049
Každá nová Kumulatívna aktualizácia pre SQL Server obsahuje všetky rýchlych opráv a všetky opravy zabezpečenia, ktoré boli súčasťou predchádzajúcej kumulatívnej aktualizácie. Pozrite si najnovšie kumulatívne aktualizácie pre SQL Server:
Alternatívne riešenie
Ak chcete obísť tento problém, použite pomôcku Option (PŘEKOMPILOVAT) dotazu v dotaze. V prípade, že sa dotaz spustí z komponentov SSIS CDC, pomôcka Option (PŘEKOMPILOVAT) môže byť nútená vytvorením sprievodca plánom ako v nasledujúcom príklade: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ámka: Je potrebné nahradiť vzorový dotaz s dotazom, s ktorým čelíte problém. Môže byť popadla z trasovania Profiler , takže žiadny ďalší znak sa omylom nepridal. Okrem toho skontrolujte, či je výberový dotaz uvedený v jednom riadku (napríklad by nemal mať žiadne prepravné spiatočné alebo riadkové krmivo), aby sprievodca plánom mohol úspešne pracovať. Môžete tiež použiť DBCC FREEPROCCACHE na zaklopenie starého plánu z cache.
Stav
Spoločnosť Microsoft potvrdzuje, že ide o problém v produktoch spoločnosti Microsoft, ktoré sú uvedené v tomto článku v časti Informácie v tomto článku sa týkajú nasledujúcich produktov.