Poprawka: Nieprawidłowe wyniki podczas wykonywania kwerendy FULL JOIN, która używa klauzuli granic ZASTOSOWAĆ w SQL Server 2008 R2 lub SQL Server 2008 R2

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 2800797 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Microsoft rozpowszechnia poprawki Microsoft SQL Server 2008 R2 z dodatkiem Service Pack 2 (SP2) jako jeden plik do pobrania. Ponieważ poprawki są zbiorcze, każde nowe wydanie zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały zawarte w poprzednich SQL Server 2008 R2 z dodatkiem Service Pack 2 fix wydania.
Rozwiń wszystko | Zwiń wszystko

Na tej stronie

Symptomy

Nieprawidłowe wyniki może pojawić się po uruchomieniu kwerendy w Microsoft SQL Server 2008 R2 z dodatkiem SP2 lub Microsoft SQL Server 2012 gdy są spełnione następujące warunki:
  • W kwerendzie użyto klauzuli Granic ZASTOSOWAĆ nad wynikiem DOŁĄCZYĆ PEŁNĄ klauzulę.
  • Dane tabeli są udostępniane przez wywołanie funkcji zdefiniowanej przez użytkownika zwracającej tabelę w klauzuli FULL JOIN .
  • Funkcja przyjmuje nazwę kolumny jako parametr i zwraca wyniki jako tabelę.
Na przykład możesz uruchomić kwerendę, podobny do następującego:
SELECT * FROM tablename 
CROSS APPLY (
    SELECT * FROM
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'New') s1 
    FULL JOIN 
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'Old') s2 
    ON s1.nodeName = s2.nodeName
    ) s 
Uwaga Ten problem nie występuje w Microsoft SQL Server 2012.

Rozwiązanie

Informacje dotyczące zbiorczej aktualizacji

Zbiorcza aktualizacja 7 programu SQL Server 2008 R2

Poprawkę dotyczącą tego problemu najpierw została wydana w zbiorczej aktualizacji 7. Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania tego pakietu aktualizacji zbiorczej 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:
2823247 7 Zbiorczy pakiet aktualizacji dla programu SQL Server 2008 R2
Uwaga Ponieważ kompilacje kumulują się, każde nowe wydanie poprawka zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały zawarte w poprzednich SQL Server 2008 R2 naprawić wydania. Zaleca się, że należy rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia go w bazie wiedzy Microsoft Knowledge Base:
2692828 SQL Server 2008 R2 buduje wydane po wydaniu programu SQL Server 2008 R2

Zbiorcza aktualizacja 3 dla programu SQL Server 2008 R2 z dodatkiem SP1

Poprawkę dotyczącą tego problemu najpierw została wydana w zbiorczej aktualizacji 3. Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania tego pakietu aktualizacji zbiorczej dla dodatku SP1 dla programu SQL Server 2012 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2812412 Zbiorczego pakietu aktualizacji 3 dla dodatku Service Pack 1 dla programu SQL Server 2012
Uwaga Ponieważ kompilacje kumulują się, każde nowe wydanie poprawka zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2012 SP1 naprawić wydania. Zaleca się, że należy rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia go w bazie wiedzy Microsoft Knowledge Base:
2772858 SQL Server 2008 R2 buduje wydane po wydaniu dodatku Service Pack 1 dla programu SQL Server 2012

Zbiorcza aktualizacja zabezpieczeń 5 dla programu SQL Server 2008 R2 z dodatkiem SP2

Poprawkę dotyczącą tego problemu najpierw została wydana w zbiorczej aktualizacji 5. Aby uzyskać więcej informacji dotyczących sposobu uzyskiwania tego pakietu aktualizacji zbiorczej dla programu SQL Server 2008 R2 SP 2 kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
2797460 Zbiorczego pakietu aktualizacji 5 dla dodatku Service Pack 2 dla programu SQL Server 2008 R2
Uwaga Ponieważ kompilacje kumulują się, każde nowe wydanie poprawka zawiera wszystkie poprawki i wszystkie poprawki zabezpieczeń, które zostały dołączone do poprzedniego programu SQL Server 2008 R2 SP 2 fix wydania. Zaleca się, że należy rozważyć zastosowanie najnowszej wersji poprawki, zawierający tę poprawkę. Aby uzyskać więcej informacji, kliknij następujący numer artykułu w celu wyświetlenia go w bazie wiedzy Microsoft Knowledge Base:
2730301 SQL Server 2008 R2 buduje wydane po wydaniu dodatku Service Pack 2 dla programu SQL Server 2008 R2

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft, które są wymienione w sekcji "Informacje zawarte w tym artykule dotyczą".

Obejście problemu

Aby obejść ten problem, należy użyć klauzuli Pełne MERGE JOIN zamiast klauzuli FULL JOIN .

Na przykład po zmianie kwerendy, który jest wymieniony w sekcji "Symptomy", aby, że kwerenda podobny do następującego:
SELECT * FROM tablename 
CROSS APPLY (
    SELECT * FROM
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'New') s1 
    FULL MERGE JOIN 
        (SELECT * FROM [dbo].[func_GetTableFromXml](xmlColumn) WHERE nodeParentName = 'Old') s2 
    ON s1.nodeName = s2.nodeName
    ) s

Więcej informacji

Aby uzyskać więcej informacji dotyczących sposobu używania klauzuli Granic ZASTOSOWAĆ , przejdź do następującej witryny sieci Web Microsoft TechNet:
Ogólne informacje o sposobach używania klauzuli zastosowania

Właściwości

Numer ID artykułu: 2800797 - Ostatnia weryfikacja: 15 kwietnia 2013 - Weryfikacja: 3.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft SQL Server 2008 R2 Service Pack 2
  • Microsoft SQL Server 2008 R2 Datacenter
  • Microsoft SQL Server 2008 R2 Enterprise
  • Microsoft SQL Server 2008 R2 Developer
  • Microsoft SQL Server 2008 R2 Standard
  • Microsoft SQL Server 2008 R2 Web
  • Microsoft SQL Server 2008 R2 Workgroup
  • Microsoft SQL Server 2008 R2 Express
  • Microsoft SQL Server 2012 Developer
  • Microsoft SQL Server 2012 Enterprise
  • Microsoft SQL Server 2012 Express
  • Microsoft SQL Server 2012 Standard
  • Microsoft SQL Server 2012 Web
  • SQL Server 2012 Enterprise Core
Słowa kluczowe: 
kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2800797 KbMtpl
Przetłumaczone maszynowo
WAŻNE: Ten artykuł nie został przetłumaczony przez człowieka, tylko przez oprogramowanie do tłumaczenia maszynowego firmy Microsoft. Firma Microsoft oferuje zarówno artykuły tłumaczone przez ludzi, jak i artykuły tłumaczone maszynowo, dzięki czemu każdy użytkownik może uzyskać dostęp do całej zawartości bazy wiedzy Knowledge Base we własnym języku. Prosimy jednak pamiętać, że artykuły przetłumaczone maszynowo nie zawsze są doskonałe. Mogą zawierać błędy słownictwa, składni i gramatyki, przypominające błędy robione przez osoby, dla których język użytkownika nie jest językiem ojczystym. Firma Microsoft nie odpowiada za wszelkie nieścisłości, błędy lub szkody spowodowane nieprawidłowym tłumaczeniem zawartości oraz za wykorzystanie tej zawartości przez klientów. Oprogramowanie do tłumaczenia maszynowego jest często aktualizowane przez firmę Microsoft.
Anglojęzyczna wersja tego artykułu to: 2800797

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com