Symptomen
Stel dat u Microsoft SQL Server 2012 Service Pack 2 (SP2) op uw computer hebt geïnstalleerd. U belt naar het cdc.fn_cdc_get_net_changes_<capture_instance> Change Data Capture (CDC) query in de opgeslagen procedure sp_executesql , en mogelijk afkomstig uit een toepassingsbron zoals SQL Server Management Studio Server (SSMS), CDC zichzelf of de SQL Server Integration Services (SSIS)-pakketten. In deze situatie ervaart u de prestaties van SQL Server 2012.Opmerking De verminderings kwaliteit kon groot zijn. Zo kan een query een paar seconden voltooien in SQL Server 2012 SP1. Het kan echter enkele uren duren voordat de query wordt uitgevoerd in SQL Server 2012 SP2. Daarnaast biedt statistieken updates geen hulp bij het probleem.
Oorzaak
Dit probleem doet zich voor vanwege een probleem met de kardinaliteit die de prestaties van het cdc.fn_cdc_get_net_changes_<capture_instance> query nadelig beïnvloeden.
Oplossing
Het probleem is voor het eerst opgelost in de volgende cumulatieve update van SQL Server.
Cumulatieve update 3 voor SQL Server 2012 SP2 /en-us/help/3002049
Elke nieuwe cumulatieve update voor SQL Server bevat alle hotfixes en alle beveiligingsoplossingen die zijn opgenomen in de vorige cumulatieve update. Bekijk de nieuwste cumulatieve updates voor SQL Server:
Tijdelijke oplossing
U kunt dit probleem omzeilen door de queryaanwijzing Option (RECOMPILE) in uw query te gebruiken. Wanneer de query wordt geactiveerd vanuit SSIS CDC Components, kan de optie (RECOMPILE) worden geforceerd door een abonnement, zoals in het volgende voorbeeld, te maken: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)'; Opmerking U moet de voorbeeldquery vervangen door de query waarmee u een probleem ondervindt. U kunt de code van de Profiler-tracering van de Profiler -tracering aanpakken, zodat er per ongeluk een extra teken wordt toegevoegd. Zorg er ook voor dat de selectie query zich in een enkele regel bevindt (bijvoorbeeld omdat dit geen regelterugloop of regelinvoer heeft) zodat de abonnements handleiding kan werken. Mogelijk moet u DBCC FREEPROCCACHE gebruiken om het oude abonnement van de cache af te stoten.
Status
Microsoft heeft bevestigd dat dit probleem zich kan voordoen in de Microsoft-producten die worden vermeld in de sectie Van toepassing op.