KB2433265 - DÜZELTME: SQL Server 2008 ve SQL Server 2008 R2'de ROW_NUMBER işlevini sol dış birleşimle birlikte kullanan bir sorgu çalıştırdığınızda yanlış sonuç alabilirsiniz

Uygulandığı Öğe
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, Microsoft SQL Server 2008 düzeltmelerini indirilebilir tek bir dosya olarak dağıtır. Düzeltmeler birikimli olduğundan, her yeni sürüm önceki SQL Server 2008 düzeltme sürümüne eklenmiş olan tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir.

Belirtiler

Aşağıdaki senaryoyu ele alalım.

  • Microsoft SQL Server 2008'de ROW_NUMBER işlevini sol dış birleşimle birlikte kullanan bir sorgunuz var.
  • Sorguyu alt sorgu olarak kullanan ve DISTINCT anahtar sözcüğünü kullanarak benzersiz satırlar döndüren bir SELECT deyimi oluşturursunuz.
  • Bu SELECT deyimini çalıştırırsınız.

Bu senaryoda, yanlış bir sonuç alabilirsiniz. Sol dış birleştirme yanlışlıkla yok sayılır.

Not Bu sorunu yeniden oluşturma hakkında daha fazla bilgi için "Daha fazla bilgi" bölümündeki "Bu sorunu yeniden oluşturma adımları" alt bölümüne bakın.

Çözüm

Toplu güncelleştirme bilgileri

SQL Server 2008 R2

Bu soruna yönelik düzeltme ilk olarak Toplu Güncelleştirme 6'da yayınlandı. SQL Server 2008 R2 için bu toplu güncelleştirme paketini edinme hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

SQL Server 2008 R2 için 2489376 Toplu Güncelleştirme Paketi 6 Not Derlemeler birikimli olduğundan, her yeni düzeltme önceki SQL Server 2008 R2 düzeltme sürümüne eklenmiş olan tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. Bu düzeltmeyi içeren en son düzeltme sürümünü uygulamayı düşünmenizi öneririz. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

981356 SQL Server 2008 R2 yayınlandıktan sonra yayımlanan SQL Server 2008 R2 derlemeleri

SQL ServerSQL Server 2008 Service Pack 1

Bu soruna yönelik düzeltme ilk olarak SQL Server 2008 Service Pack 1 için Toplu Güncelleştirme 11'de yayımlanmıştır.

Bu toplu güncelleştirme paketi hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

2413738 SQL Server 2008 Service Pack 1 için Toplu Güncelleştirme Paketi 11Note Derlemeler birikimli olduğundan, her yeni düzeltme önceki SQL Server 2008 düzeltme sürümüne dahil edilen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. Microsoft, bu düzeltmeyi içeren en son düzeltme sürümünü uygulamayı düşünmenizi önerir. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

970365 SQL Server 2008 Service Pack 1 yayımlandıktan sonra yayımlanan SQL Server 2008 derlemeleri Belirli SQL Server hizmet paketleri için Microsoft SQL Server 2008 düzeltmeleri oluşturulmuştur. Bir SQL ServerSQL Server 2008 Service Pack 1 yüklemesine bir SQL ServerSQL Server 2008 Service Pack 1 düzeltmesi uygulamanız gerekir. Varsayılan olarak, bir SQL ServerSQL Server hizmet paketinde sağlanan tüm düzeltmeler, bir sonraki SQL ServerSQL Server hizmet paketine dahil edilir.

SQL ServerSQL Server 2008 Service Pack 2

Bu soruna yönelik düzeltme ilk olarak SQL Server 2008 Service Pack 2 için Toplu Güncelleştirme 2'de yayımlanmıştır. Bu toplu güncelleştirme paketi hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

2467239 SQL Server 2008 Service Pack 2 için Toplu Güncelleştirme Paketi 2Not: Derlemeler birikimli olduğundan, her yeni düzeltme önceki SQL Server 2008 düzeltme sürümünde yer alan tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. Microsoft, bu düzeltmeyi içeren en son düzeltme sürümünü uygulamayı düşünmenizi önerir. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

2402659 SQL Server 2008 Service Pack 2 kullanıma sunulduktan sonra yayımlanan SQL Server 2008 derlemeleri Belirli SQL Server hizmet paketleri için Microsoft SQL Server 2008 düzeltmeleri oluşturulmuştur. Bir SQL ServerSQL Server 2008 Service Pack 2 yüklemesine bir SQL ServerSQL Server 2008 Service Pack 2 düzeltmesi uygulamanız gerekir. Varsayılan olarak, bir SQL ServerSQL Server hizmet paketinde sağlanan tüm düzeltmeler, bir sonraki SQL ServerSQL Server hizmet paketine dahil edilir.

Durum

Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.

Daha Fazla Bilgi

Bu sorunu yeniden oluşturma adımları

  1. Aşağıdaki deyimleri çalıştırın. Bu deyimler iki tablo oluşturur ve tablolara bir miktar veri ekler.

    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. Aşağıdaki ifadeyi çalıştırın. Bu deyim ROW_NUMBER işlevini sol dış birleşimle birlikte kullanır.

    select a1, row_number() over (partition by a1 order by a1) as a3
    
    from A
    
    left join B ON A.a1 = B.b1
    
  3. Aşağıdaki ifadeyi çalıştırın. Bu deyim, 2. adımdaki sorguyu alt sorgu olarak kullanır:

    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
    

Not: Bu sorun oluştuğunda 3. adımdaki sorgu yanlış sonuç döndürür.

Başvurular

ROW_NUMBER işlevi ve dış birleşimler hakkında daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) web sitelerini ziyaret edin:

SQL Server için Artımlı Hizmet Modeli hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

935897 Bildirilen sorunlara yönelik düzeltmeler sağlamak için SQL Server ekibi tarafından bir Artımlı Bakım Modeli sağlanır

SQL Server güncelleştirmelerin adlandırma şeması hakkında daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

822499 Microsoft SQL Server yazılım güncelleştirme paketleri için yeni adlandırma şemasıYazılım güncelleştirme terminolojisi hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

824684 Microsoft yazılım güncelleştirmelerini açıklamak için kullanılan standart terminolojinin açıklaması