KB2433265 – KORREKTUR: Möglicherweise erhalten Sie ein falsches Ergebnis, wenn Sie eine Abfrage ausführen, die die ROW_NUMBER-Funktion zusammen mit einer linken äußeren Verknüpfung in SQL Server 2008 und SQL Server 2008 R2 verwendet

Gilt für
SQL Server 2008 Enterprise SQL Server 2008 Standard SQL Server 2008 Workgroup SQL Server 2008 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Standard SQL Server 2008 R2 Workgroup SQL Server 2008 R2 Developer

Microsoft stellt Fixes für Microsoft SQL Server 2008 als eine herunterladbare Datei bereit. Da die Fixes kumulativ sind, enthält jede neue Version alle Hotfixes und Sicherheitsfixes, die in der vorherigen Version der Korrektur für SQL Server 2008 enthalten waren.

Symptome

Nehmen Sie folgendes Szenario an.

  • Sie haben eine Abfrage, die die ROW_NUMBER-Funktion zusammen mit einer linken äußeren Verknüpfung in Microsoft SQL Server 2008 verwendet.
  • Sie erstellen eine SELECT-Anweisung, die die Abfrage als Unterabfrage verwendet und eindeutige Zeilen mithilfe des Schlüsselworts (Schlüsselwort) zurückgibt.
  • Sie führen diese SELECT-Anweisung aus.

In diesem Szenario erhalten Sie möglicherweise ein falsches Ergebnis. Die linke äußere Verknüpfung wird fälschlicherweise ignoriert.

Hinweis: Weitere Informationen zum Reproduzieren dieses Problems finden Sie im Unterabschnitt "Schritte zum Reproduzieren dieses Problems" im Abschnitt "Weitere Informationen".

Lösung

Informationen zum kumulativen Update

SQL Server 2008 R2

Die Korrektur für dieses Problem wurde erstmals im kumulativen Update 6 veröffentlicht. Weitere Informationen zum Bezug dieses kumulativen Updatepakets für SQL Server 2008 R2 finden Sie im folgenden Artikel der Microsoft Knowledge Base:

2489376 Kumulatives Updatepaket 6 für SQL Server 2008 R2 Hinweis Da die Builds kumulativ sind, enthält jede neue Fixversion alle Hotfixes und Sicherheitsfixes, die in der vorherigen SQL Server 2008 R2-Fixversion enthalten waren. Es wird empfohlen, die Anwendung des neuesten Fixrelease in Betracht zu ziehen, das diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:

981356 SQL Server 2008 R2-Builds, die nach der Freigabe von SQL Server 2008 R2 veröffentlicht wurden

SQL Server 2008 Service Pack 1

Der Fix für dieses Problem wurde erstmals im kumulativen Update 11 für SQL Server 2008 Service Pack 1 veröffentlicht.

Weitere Informationen zu diesem kumulativen Updatepaket finden Sie im folgenden Artikel der Microsoft Knowledge Base:

2413738 Kumulatives Updatepaket 11 für SQL Server 2008 Service Pack 1Hinweis Da die Builds kumulativ sind, enthält jede neue Fixversion alle Hotfixes und Sicherheitsfixes, die in der vorherigen Fixversion von SQL Server 2008 enthalten waren. Microsoft empfiehlt, die Anwendung des neuesten Fixrelease zu erwägen, das diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:

970365 Die SQL Server 2008-Builds, die nach der Freigabe von SQL Server 2008 Service Pack 1 veröffentlicht wurden, Microsoft SQL Server 2008 Hotfixes werden für bestimmte SQL Server Service Packs erstellt. Sie müssen einen SQL Server 2008 Service Pack 1-Hotfix auf eine Installation von SQL Server 2008 Service Pack 1 anwenden. Standardmäßig sind alle in einem Service Pack für SQL Server enthaltenen Hotfixes im nächsten Service Pack für SQL Server enthalten.

SQL Server 2008 Service Pack 2

Der Fix für dieses Problem wurde erstmals im kumulativen Update 2 für SQL Server 2008 Service Pack 2 veröffentlicht. Weitere Informationen zu diesem kumulativen Updatepaket finden Sie im folgenden Artikel der Microsoft Knowledge Base:

2467239 Kumulatives Updatepaket 2 für SQL Server 2008 Service Pack 2Hinweis Da die Builds kumulativ sind, enthält jede neue Fixversion alle Hotfixes und Sicherheitsfixes, die in der vorherigen Fixversion von SQL Server 2008 enthalten waren. Microsoft empfiehlt, die Anwendung des neuesten Fixrelease zu erwägen, das diesen Hotfix enthält. Weitere Informationen finden Sie im folgenden Artikel der Microsoft Knowledge Base:

2402659 Die SQL Server 2008-Builds, die nach der Freigabe von SQL Server 2008 Service Pack 2 veröffentlicht wurden, Microsoft SQL Server 2008 Hotfixes werden für bestimmte SQL Server Service Packs erstellt. Sie müssen einen SQL Server 2008 Service Pack 2-Hotfix auf eine Installation von SQL Server 2008 Service Pack 2 anwenden. Standardmäßig sind alle in einem Service Pack für SQL Server enthaltenen Hotfixes im nächsten Service Pack für SQL Server enthalten.

Status

Microsoft hat bestätigt, dass dies ein Problem bei den Microsoft-Produkten ist, die im Abschnitt „Gilt für“ aufgeführt sind.

Weitere Informationen

Schritte zum Reproduzieren dieses Problems

  1. Führen Sie die folgenden Anweisungen aus. Diese Anweisungen erstellen zwei Tabellen und fügen einige Daten in die Tabellen ein.

    create table A (a1 int)
    
    create table B (b1 int)
    
    
    
    insert into A values(1)
    
    insert into B values(1)
    
    insert into B values(1)
    
  2. Führen Sie die folgende Anweisung aus. Diese Anweisung verwendet die Funktion ROW_NUMBER zusammen mit einer linken äußeren Verknüpfung.

    select a1, row_number() over (partition by a1 order by a1) as a3
    
    from A
    
    left join B ON A.a1 = B.b1
    
  3. Führen Sie die folgende Anweisung aus. Diese Anweisung verwendet die Abfrage in Schritt 2 als Unterabfrage:

    select distinct a1, a3
    
    from (
    
          select a1, row_number() over (partition by a1 order by a1) as a3
    
          from A
    
          left join B ON A.a1 = B.b1
    
    ) as x
    

Hinweis: Die Abfrage in Schritt 3 gibt ein falsches Ergebnis zurück, wenn dieses Problem auftritt.

Referenzmaterial

Weitere Informationen zur ROW_NUMBER-Funktion und zu äußeren Verknüpfungen finden Sie auf den folgenden MSDN-Websites (MSDN):

Weitere Informationen zum inkrementellen Wartungsmodell für SQL Server finden Sie im folgenden Artikel der Microsoft Knowledge Base:

935897 Zur Bereitstellung von Hotfixes für gemeldete Probleme ist ein inkrementelles Wartungsmodell vom SQL Server-Team verfügbar

Weitere Informationen zum Benennungsschema für SQL Server-Updates finden Sie im folgenden Artikel der Microsoft Knowledge Base:

822499 Neues Benennungsschema für Softwareupdatepakete für Microsoft SQL Server Weitere Informationen zur Terminologie für Softwareupdates finden Sie im folgenden Artikel der Microsoft Knowledge Base:

824684 Erläuterung von Standardbegriffen bei Microsoft-Softwareupdates