Update: Falsche Ergebnisse, wenn Sie eine FULL JOIN-Abfrage ausführen, die die CROSS APPLY-Klausel in SQL Server 2008 R2 oder SQL Server 2012 verwendet.

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 2800797 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Microsoft stellt Updates für Microsoft SQL Server 2008 R2 Service Pack 2 (SP2) als downloadbare Datei zur Verfügung. Da die Updates kumulativ sind, enthält jede neue Version alle Hotfixes und alle die Sicherheitsupdates, die mit früheren SQL Server 2008 R2 Service Pack 2 enthalten waren.
Alles erweitern | Alles schließen

Auf dieser Seite

Problembeschreibung

Sie erhalten möglicherweise falsche Ergebnisse, beim Ausführen einer Abfrage in Microsoft SQL Server 2008 R2 SP2 oder Microsoft SQL Server 2012 Wenn folgenden Bedingungen erfüllt sind:
  • Die Abfrage verwendet CROSS APPLY -Klausel über das Ergebnis einer FULL JOIN -Klausel.
  • Die Daten der Tabelle erhalten Sie durch Aufrufen von einer benutzerdefinierten Tabellenwertfunktion in der FULL JOIN -Klausel.
  • Die Funktion akzeptiert einen Spaltennamen als Parameter und gibt die Ergebnisse als Tabelle zurück.
Beispielsweise führen Sie eine Abfrage, die der folgenden ähnelt:
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 
Hinweis Dieses Problem tritt nicht in Microsoft SQL Server 2012.

Lösung

Kumulatives Update-Informationen

Kumulative Update 7 für SQL Server 2012

Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 7 veröffentlicht. Weitere Informationen dazu, wie Sie dieses kumulative Updatepaket für SQL Server 2012 zu erhalten klicken Sie auf die folgende Artikelnummer klicken, um den Artikel der Microsoft Knowledge Base anzuzeigen:
2823247 Kumulatives Updatepaket 7 für SQL Server 2012
Hinweis Da die Builds kumulativ sind, jede neue Version enthält alle Hotfixes und alle die Sicherheitsupdates, die mit der vorherigen SQL Server 2012 enthalten waren. Es wird empfohlen, dass es Sie sich die neueste Version, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2692828 Der SQL Server 2012 erstellt, die nach der Freigabe von SQL Server 2012

Kumulatives Update 3 für SQL Server 2012 SP1

Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 3 veröffentlicht. Weitere Informationen dazu, wie Sie dieses kumulative Updatepaket für SQL Server 2012 SP1 zu erhalten klicken Sie auf die folgende Artikelnummer klicken, um den Artikel der Microsoft Knowledge Base anzuzeigen:
2812412 Kumulatives Updatepaket 3 für SQL Server 2012 Service Pack 1
Hinweis Da die Builds kumulativ sind, jede neue Version enthält alle Hotfixes und alle die Sicherheitsupdates, die in der vorherigen SQL Server 2012 SP1 enthalten waren. Es wird empfohlen, dass es Sie sich die neueste Version, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2772858 Der SQL Server 2012 erstellt, die nach der Freigabe von SQL Server 2012 Service Pack 1

Kumulatives Update 5 für SQL Server 2008 R2 SP2

Die Fehlerbehebung für dieses Problem wurde erstmals im kumulativen Update 5 veröffentlicht. Weitere Informationen dazu, wie Sie dieses kumulative Updatepaket für SQL Server 2008 R2 SP2 zu erhalten klicken Sie auf die folgende Artikelnummer klicken, um den Artikel der Microsoft Knowledge Base anzuzeigen:
2797460 Kumulatives Updatepaket 5 für SQL Server 2008 R2 Service Pack 2
Hinweis Da die Builds kumulativ sind, jede neue Version enthält alle Hotfixes und alle die Sicherheitsupdates, die mit früheren SQL Server 2008 R2 SP 2 geliefert wurden. Es wird empfohlen, dass es Sie sich die neueste Version, die diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:
2730301 Die SQL Server 2008 R2 erstellt, die nach der Freigabe von SQL Server 2008 R2 Service Pack 2

Status

Microsoft hat bestätigt, dass dieses Problem auf die im Abschnitt "Gilt für" aufgeführten Microsoft-Produkten zutrifft.

Abhilfe

Um dieses Problem zu umgehen, verwenden Sie die Vollständige MERGE JOIN -Klausel anstelle einer FULL JOIN -Klausel.

Beispielsweise ändern Sie die Abfrage, die in den Abschnitt "Problembeschreibung" erwähnt, dass die Abfrage der folgenden ähnelt:
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

Weitere Informationen

Weitere Informationen dazu, wie Sie die CROSS APPLY -Klausel verwenden, fahren mit der folgenden Microsoft TechNet-Website:
Allgemeine Informationen dazu, wie Sie die CROSS APPLY-Klausel verwenden

Eigenschaften

Artikel-ID: 2800797 - Geändert am: Montag, 15. April 2013 - Version: 3.0
Die Informationen in diesem Artikel beziehen sich auf:
  • 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
Keywords: 
kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2800797 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 2800797
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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