FIX: Hasil yang salah ketika Anda menjalankan query JOIN penuh yang menggunakan CROSS menerapkan klausa dalam SQL Server 2008 R2 atau di SQL Server 2012

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 2800797 - Melihat produk di mana artikel ini berlaku.
Microsoft mendistribusikan perbaikan Microsoft SQL Server 2008 R2 Service Pack 2 (SP2) sebagai satu file download. Karena perbaikan bersifat kumulatif, setiap rilis baru berisi semua perbaikan terbaru dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2008 R2 Service Pack 2 fix rilis.
Perbesar semua | Perkecil semua

Pada Halaman ini

Gejala

Anda akan menerima hasil yang salah ketika Anda menjalankan query di Microsoft SQL Server 2008 R2 SP2 atau di Microsoft SQL Server 2012 ketika kondisi berikut ini benar:
  • Query menggunakan sebuah klausul yang CROSS berlaku atas hasil dari klausa Penuh bergabung .
  • Daftar tabel data yang disediakan oleh memanggil bernilai Daftar Tabel user-defined fungsi dalam klausa Penuh bergabung .
  • Fungsi menerima nama kolom sebagai parameter, dan kembali hasil sebagai tabel atak.
Misalnya, Anda menjalankan query yang menyerupai berikut:
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 
Catatan Masalah ini tidak terjadi di Microsoft SQL Server 2012.

Pemecahan masalah

Informasi pembaruan kumulatif

Pembaruan kumulatif 7 untuk SQL Server 2012

Perbaikan untuk masalah ini pertama kali dirilis di pembaruan kumulatif 7. Untuk informasi lebih lanjut tentang cara mendapatkan paket pembaruan kumulatif ini untuk SQL Server 2012, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
2823247 Paket pembaruan kumulatif 7 untuk SQL Server 2012
Catatan Karena membangun kumulatif, setiap baru memperbaiki rilis berisi semua perbaikan terbaru dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2012 fix rilis. Kami sarankan agar Anda menerapkan terbaru fix release yang berisi perbaikan terbaru ini. Untuk informasi lebih lanjut, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
2692828 SQL Server 2012 membangun yang dibebaskan setelah SQL Server 2012 dirilis

Pembaruan kumulatif 3 untuk SQL Server 2012 SP1

Perbaikan untuk masalah ini pertama kali dirilis pada 3 Update kumulatif. Untuk informasi lebih lanjut tentang cara mendapatkan paket pembaruan kumulatif ini untuk SQL Server 2012 SP1, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
2812412 Paket pembaruan kumulatif 3 untuk SQL Server 2012 Service Pack 1
Catatan Karena membangun kumulatif, setiap baru memperbaiki rilis berisi semua perbaikan terbaru dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2012 SP1 fix rilis. Kami sarankan agar Anda menerapkan terbaru fix release yang berisi perbaikan terbaru ini. Untuk informasi lebih lanjut, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
2772858 SQL Server 2012 membangun yang dibebaskan setelah SQL Server 2012 Service Pack 1 telah dirilis

Pembaruan kumulatif 5 untuk SQL Server 2008 R2 SP2

Perbaikan untuk masalah ini pertama kali dirilis pada 5 pembaruan kumulatif. Untuk informasi lebih lanjut tentang cara mendapatkan paket pembaruan kumulatif ini untuk SQL Server 2008 R2 SP 2, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
2797460 Paket pembaruan kumulatif 5 untuk SQL Server 2008 R2 Service Pack 2
Catatan Karena membangun kumulatif, setiap baru memperbaiki rilis berisi semua perbaikan terbaru dan semua perbaikan keamanan yang disertakan dengan sebelumnya SQL Server 2008 R2 SP 2 fix rilis. Kami sarankan agar Anda menerapkan terbaru fix release yang berisi perbaikan terbaru ini. Untuk informasi lebih lanjut, klik nomor artikel berikut ini untuk melihat artikel di dalam Pangkalan Pengetahuan Microsoft:
2730301 SQL Server 2008 R2 membangun yang dibebaskan setelah SQL Server 2008 R2 Service Pack 2 dirilis

Status

Microsoft telah mengkonfirmasi bahwa ini merupakan masalah di dalam produk Microsoft sebagaimana didaftar di dalam bagian "Applies to".

Teknik pemecahan masalah

Untuk mengatasi masalah ini, gunakan klausa Penuh menggabungkan bergabung bukan sebuah klausul yang Penuh bergabung .

Misalnya, Anda mengubah permintaan yang disebutkan di bagian "Gejala" untuk query menyerupai berikut:
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

Informasi lebih lanjut

Untuk informasi lebih lanjut tentang cara menggunakan CROSS menerapkan klausa, pergi ke website Microsoft TechNet berikut:
Informasi umum tentang cara menggunakan CROSS menerapkan klausa

Properti

ID Artikel: 2800797 - Kajian Terakhir: 15 April 2013 - Revisi: 4.0
Berlaku bagi:
  • 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
Kata kunci: 
kbqfe kbfix kbsurveynew kbexpertiseadvanced kbmt KB2800797 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini: 2800797

Berikan Masukan

 

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