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ć.

Firma Microsoft rozpowszechnia poprawki programu Microsoft SQL Server 2008 R2 z dodatkiem Service Pack 1 (SP1) lub Microsoft SQL Server 2012 w jednym pliku do pobrania. Ponieważ poprawki są zbiorcze, każdy nowy pakiet zawiera wszystkie poprawki i wszystkie aktualizacje zabezpieczeń, które zostały dołączone do wcześniejszej wersji programu SQL Server 2008 R2 z dodatkiem Service Pack 1 (SP1) lub SQL Server 2012.

Symptomy

Uwzględnij następujący scenariusz. Kwerenda jest uruchamiana w programie Microsoft SQL Server 2008 R2 lub Microsoft SQL Server 2012, a Optymalizator kwerend generuje plan wykonania zawierający główny operator. W tym scenariuszu wykonanie kwerendy może zająć dużo czasu. Na przykład uruchom zapytanie podobne do następujących:

SELECT TableA.Col1 FROM TableA JOIN TableB ON TableA.Col1 = TableB.Col1 WHERE TableA.Col2 = N'A' AND TableB.Col3 IN (SELECT Col1 FROM TableC )Ta kwerenda obejmuje dwa sprzężenia. Jedno sprzężenie jest między TableB a TableC. (Jest to implikowane przez obecność predykatu IN). Drugie sprzężenie znajduje się między tabelą A a wynikiem pierwszego sprzężenia. Predykat IN zwróci wartość PRAWDA, jeśli kwerenda odnajdzie co najmniej jeden wiersz spełniający predykat pierwszego sprzężenia. W związku z tym optymalizator zapytań doda operator najtrafniejsze w planie wykonywania kwerend. Taka kwerenda może zwrócić tylko kilka wierszy. Wykonanie tego zapytania może jednak trwać dłużej, niż oczekiwano. W rzeczywistym planie wykonania kwerendy Szacowana liczba wierszy różni się znacznie od rzeczywistej liczby wierszy. Wpływa to na zdolność optymalizatora zapytań do dokładnego szacowania kosztów dla różnych opcji planu. Ten problem może również wystąpić w przypadku jawnego użycia operatora NAJTRAFNIEJSZE lub w przypadku korzystania z jednego z następujących operatorów:

  • OPCJA (SZYBKO N)

  • W

  • ZNAJDUJE

Rozwiązanie

Informacje o aktualizacji zbiorczej

SQL Server 2008 R2 z dodatkiem Service Pack 2

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 1 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 2. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2720425 Pakiet aktualizacji zbiorczej 1 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 2Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2730301 Kompilacja programu SQL Server 2008 R2 opublikowanych po wydaniu programu SQL Server 2008 R2 z dodatkiem Service Pack 2

SQL Server 2008 R2 z dodatkiem Service Pack 1

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 7 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 1. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2703282 Pakiet aktualizacji zbiorczej 7 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 1Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2567616 Kompilacje programu SQL Server 2008 R2, które zostały wydane po opublikowaniu dodatku Service Pack 1 dla programu SQL Server 2008 R2

Program SQL Server 2012

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 2 dla programu SQL Server 2012. Aby uzyskać więcej informacji na temat tego zbiorczego pakietu aktualizacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2703275 Pakiet aktualizacji zbiorczej 2 dla programu SQL Server 2012Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniej wersji poprawki SQL Server 2012. Firma Microsoft zaleca zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2692828 Kompilacje programu SQL Server 2012 wydane po wydaniu programu SQL Server 2012 Musisz zastosować poprawkę SQL Server 2012 do instalacji programu SQL Server 2012.

SQL Server 2008 R2

Poprawka dotycząca tego problemu została wydana po raz pierwszy w aktualizacji zbiorczej 13. Aby uzyskać więcej informacji na temat sposobu uzyskiwania tego zbiorczego pakietu aktualizacji dla programu SQL Server 2008 R2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

2679366 Pakiet aktualizacji zbiorczej 13 dla programu SQL Server 2008 R2Uwaga Ponieważ kompilacja jest zbiorcza, każdy nowy pakiet poprawek zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń dołączone do poprzedniej wersji poprawki SQL Server 2008 R2. Zalecamy zastosowanie najnowszego wydania poprawki zawierającego tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:

981356 Kompilacje programu SQL Server 2008 R2, które zostały wydane po opublikowaniu programu SQL Server 2008 R2Uwaga Po zainstalowaniu aktualizacji zbiorczej należy włączyć flagę śledzenia 4199, aby włączyć poprawkę, która jest dostępna w tej aktualizacji skumulowanej, jeśli spełnione są następujące warunki:

  • W planie zapytania znajduje się operator NAJTRAFNIEJSZE nad operatorem sprzężenia pętli zagnieżdżonych (sprzężenie 1) po prawej stronie innego operatora Apply/join (Join 2).

  • Zewnętrzna strona sprzężenia 1 zawiera zewnętrzne odwołanie do zewnętrznej strony dołączania 2.

  • Sprzężenie 1 używa predykatu równości w kolumnie po lewej stronie, która jest unikatowa.

Przykład takiego zapytania jest wyświetlany w sekcji "Symptomy". (Zakłada się, że w bazie danych występują niektóre ograniczenia unikatowości). Jeśli istnieją inne zapytania, w których znajdują się operatory początek, opcja (szybkie N), IN lub EXISTS, które generują podobne objawy, ale nie pasują do wzorca opisanego w tym artykule, należy włączyć flagę śledzenia 4138.Ostrzeżenie Jeśli włączysz flagę śledzenia 4138, wydajność może zostać zmniejszona w przypadku innych zapytań, które zawierają operatory początek, opcja (szybkie N), IN lub EXISTS. Flagę śledzenia 4138 należy stosować tylko wtedy, gdy są spełnione następujące warunki:

  • Jej wpływ na powolne kwerendy, które wiążą się z tymi operatorami, jest potwierdzony.

  • Nie ma żadnych użytecznych obejścii.

  • Nie wykryto regresji dla innych zapytań zawierających podobne operatory.

Stan

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

Obejście

Aby obejść ten problem, użyj operatora lewego SPRZĘŻENIa zewnętrznego lub dowolnej z kilku wskazówek dotyczących OPTYMALIZATORA.

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ę!

×