Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

Symptomy

Załóżmy, że na komputerze zastosowano dodatek Service Pack 2 (SP2) dla programu Microsoft SQL Server 2012. Użytkownik dzwoni do cdc.fn_cdc_get_net_changes_<capture_instance> kwerenda Capture (resourceing) w procedurze składowanej sp_executesql , która może pochodzić ze źródła aplikacji, takiego jak program SQL Server Management Studio Server (SSMSE), Przechwyć sam lub pakiet SQL Server Integration Services (SSIS). W takiej sytuacji wydajność programu SQL Server 2012 jest niska.UwagaSpadek wydajności może być duży. Na przykład kwerenda może zakończyć się w ciągu kilku sekund w programie SQL Server 2012 SP1. Jednak uruchomienie tego samego zapytania może trwać kilka godzin w programie SQL Server 2012 z dodatkiem SP2. Ponadto aktualizacja statystyki nie pomoże rozwiązać problemu.

Przyczyna

Ten problem występuje z powodu problemu z szacowaniem kardynalności, który poważnie wpływa na wydajność cdc.fn_cdc_get_net_changes_<capture_instance> Query.

Każda nowa Zbiorcza aktualizacja programu SQL Server zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń uwzględnione w poprzedniej aktualizacji zbiorczej. Zapoznaj się z najnowszymi aktualizacjami zbiorczymi dla programu SQL Server:

Obejście

Aby obejść ten problem, użyj wskazówki dotyczącej kwerendy opcji (RECOMPILE) w zapytaniu. Na wypadek, gdyby kwerenda została wyzwolona przy użyciu składników usług wyszukiwania danych SSIS, Wskazówka opcji (RECOMPILE) może zostać wymuszona przez utworzenie przewodnika planu, tak jak w poniższym przykładzie: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)'; UwagaKonieczne jest zastąpienie kwerendy przykładem kwerendą, z którą jest skierowany problem. Można go poszukać w śledzeniu profilera , więc nie jest przypadkowo dodawany żaden dodatkowy znak. Ponadto upewnij się, że kwerenda wybierająca jest umieszczona w pojedynczym wierszu (na przykład nie powinna zawierać żadnych znaków powrotu karetki lub linii pomocniczych), aby plan mógł działać prawidłowo. Być może trzeba również użyć polecenia DBCC FREEPROCCACHE , aby wycinać stary plan z pamięci podręcznej.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji "dotyczy".

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×