KB2727322 — POPRAWKA: Nieprawidłowe wyniki są zwracane po uruchomieniu zapytania, które korzysta z równoległości planu wykonywania zapytania w SQL Server 2008, SQL Server 2008 R2 lub w SQL Server 2012

Dotyczy
SQL Server 2008 Service Pack 3 SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Web SQL Server 2008 Standard Edition for Small Business SQL Server 2012 Business Intelligence SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard SQL Server 2012 Enterprise Core SQL Server 2012 Web SQL Server 2008 R2 Datacenter SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Web

Firma Microsoft dystrybuuje poprawki dla programu Microsoft SQL Server 2008 z dodatkiem Service Pack 3 w jednym pliku do pobrania. Ponieważ poprawki są zbiorcze, każda nowa wersja zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki dodatku Service Pack 3 dla programu SQL Server 2008.

Objawy

Załóżmy, że w planie wykonywania zapytania jest uruchamiane zapytanie używające równoległości w planie wykonywania zapytania w programach SQL Server 2008, SQL Server 2008 R2 lub SQL Server 2012. Plan kwerendy musi spełniać następujące warunki:

  • Plan wykonywania zapytania zawiera operator mapy bitowej oraz sprzężenie za pomocą skrótu lub sprzężenie scalające.
  • Predykat sprzężenia skrótów lub scalania zawiera porównanie IS kolumn, które mogą mieć wartość NULL.

W tym scenariuszu zapytanie zwraca niepoprawne wyniki.

Przyczyna

Ten problem występuje, ponieważ wartość NULL jest odrzucana, gdy program SQL Server używa filtrowania map bitowych podczas skanowania tabeli lub skanowania indeksu.

Rozwiązanie

Informacje o aktualizacji zbiorczej

Pakiet aktualizacji zbiorczej 1 dla dodatku Service Pack 1 dla programu SQL Server 2012

Poprawka rozwiązująca ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 1. Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania tego pakietu aktualizacji zbiorczej dla dodatku Service Pack 1 dla programu SQL Server 2012, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2765331 Pakiet aktualizacji zbiorczej 1 dla dodatku Service Pack 1 SQL Server 2012 Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki SQL Server 2012. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2772858 Kompilacje SQL Server 2012 wydane po wydaniu dodatku Service Pack 1 SQL Server 2012

SQL Server 2008 R2 z dodatkiem Service Pack 2

Poprawkę rozwiązującą ten problem opublikowano po raz pierwszy w aktualizacji zbiorczej 2 dla programu SQL Server 2008 R2 z dodatkiem Service Pack 2. Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania tego pakietu aktualizacji zbiorczej, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2740411 Pakiet aktualizacji zbiorczej 2 dla dodatku Service Pack 2 SQL Server 2008 R2Uwaga Ponieważ te kompilacje mają charakter zbiorczy, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji SQL Server 2008 R2. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2730301 Kompilacje SQL Server 2008 R2 wydane po wydaniu dodatku Service Pack 2 SQL Server 2008 R2

SQL Server 2008 R2 z dodatkiem Service Pack 1

Poprawka rozwiązująca ten problem została po raz pierwszy opublikowana w aktualizacji zbiorczej 8. Aby uzyskać więcej informacji dotyczących sposobu uzyskania tego pakietu aktualizacji zbiorczej dla dodatku Service Pack 1 dla programu SQL Server 2008 R2, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2723743 Pakiet 8 aktualizacji zbiorczych dla dodatku SP1 SQL Server 2008 R2 Uwaga Ponieważ te kompilacje są zbiorcze, każda nowa poprawka zawiera wszystkie poprawki i poprawki zabezpieczeń zawarte w poprzedniej wersji poprawki dodatku Service Pack 1 dla SQL Server 2008 R2. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2567616 Kompilacje SQL Server 2008 R2 wydane po wydaniu SQL Server 2008 R2 z dodatkiem SP1

SQL Server 2012

Poprawkę rozwiązującą ten problem opublikowano po raz pierwszy w aktualizacji zbiorczej 3 dla programu SQL Server 2012. Aby uzyskać więcej informacji dotyczących tego pakietu aktualizacji skumulowanych, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2723749 Pakiet aktualizacji zbiorczej 3 dla SQL Server 2012Uwaga Ponieważ kompilacje są zbiorcze, każda nowa poprawka zawiera wszystkie poprawki i poprawki zabezpieczeń, które były zawarte w poprzedniej wersji poprawki SQL Server 2012. Firma Microsoft zaleca rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2692828 Kompilacje SQL Server 2012 wydane po wydaniu SQL Server 2012 Poprawkę SQL Server 2012 należy zastosować do instalacji programu SQL Server 2012.

Dodatek Service Pack 3 dla programu SQL Server 2008

Poprawkę rozwiązującą ten problem opublikowano po raz pierwszy w aktualizacji zbiorczej 6 dla dodatku Service Pack 3 dla programu SQL Server 2008. Aby uzyskać więcej informacji dotyczących tego pakietu aktualizacji skumulowanych, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2715953 Pakiet aktualizacji zbiorczej 6 dla dodatku Service Pack 3 SQL Server 2008Uwaga Ponieważ te kompilacje mają charakter zbiorczy, każda nowa wersja poprawki zawiera wszystkie poprawki i poprawki zabezpieczeń, które zostały uwzględnione w poprzedniej wersji poprawki SQL Server 2008. Zalecamy rozważenie zastosowania najnowszej wersji poprawki zawierającej tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Baza wiedzy Microsoft Knowledge Base:

2629969 Kompilacje SQL Server 2008 wydane po wydaniu dodatku Service Pack 3 SQL Server 2008 Poprawki Microsoft SQL Server 2008 są tworzone dla określonych SQL Server dodatków Service Pack. Należy zastosować poprawkę dodatku Service Pack 3 dla programu SQL Server 2008 do instalacji dodatku Service Pack 3 dla programu SQL Server 2008. Domyślnie każda poprawka dostępna w dodatku Service Pack dla programu SQL Server jest uwzględniona w następnym dodatku Service Pack dla programu SQL Server.

Stan

Firma Microsoft potwierdziła, że jest to problem dotyczący produktów firmy Microsoft wymienionych w sekcji „Dotyczy”.

Obejście

Aby obejść ten problem, unikaj używania równoległości w zapytaniu, stosując jedną z metod:

  • Dodaj opcję wskazówki dotyczącej zapytania MAXDOP 1.
  • Ustaw opcję Maksymalny stopień równoległości na 1.

Więcej informacji

Aby uzyskać więcej informacji na temat równoległych sprzężeń skrótów, odwiedź następującą witrynę blogów MSDN w sieci Web:

Ogólne informacje o równoległych sprzężeniach skrótów Aby uzyskać więcej informacji o filtrach map bitowych wykonywania zapytań, odwiedź następującą witrynę blogów MSDN w sieci Web:

Ogólne informacje o filtrach map bitowych podczas wykonywania zapytań