Gejala
Asumsikan Anda memiliki tabel yang berisi kolom tipe data DATE, dan Anda telah menerapkan Indeks Penyimpanan Kolom Berkluster (CCSI) pada tabel ini di Microsoft SQL Server 2014. Ketika Anda mencoba mengkueri tabel menggunakan tipe data DATE sebagai pemberi kualifikasi, data yang salah mungkin akan dikembalikan.
Misalnya:buat tabel tab2
(C1 Int, C2 Date, C3 Varchar(10))
BUAT INDEKS PENYIMPAN KOLOM BERKLUSTER [CCI_tab2] AKTIF [TAB2] DENGAN (DROP_EXISTING = NONAKTIF)
GO
Pilih *
DARI tab2 S -- Tabel dengan indeks penyimpan kolom berkluster
WHERE S.c2 = @date -- variabel tipe data Tanggal
Resolusi
Informasi paket layanan
Untuk mengatasi masalah ini, dapatkan Paket Layanan 1 untuk SQL Server 2014.
Untuk informasi selengkapnya tentang SQL Server 2014 Paket Layanan 1 (SP1), lihat bug yang diperbaiki di SQL Server 2014 Paket Layanan 1 .
Informasi Pembaruan Kumulatif
Masalah ini pertama kali diperbaiki dalam pembaruan kumulatif SQL Server berikut.
Rekomendasi: Menginstal pembaruan kumulatif terbaru untuk SQL Server
Setiap pembaruan kumulatif baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Lihat pembaruan kumulatif terbaru untuk SQL Server:
- Pembaruan kumulatif terbaru untuk SQL Server 2014 SP1
- Pembaruan kumulatif terbaru untuk SQL Server 2014
Informasi Selengkapnya
Gunakan kode berikut untuk mereproduksi masalah ini:buat tabel tab1
(C1 INT, tanggal C2)
Sisipkan ke tab1
nilai (1 , '2000-01-01')
MEMBUAT INDEKS TIDAK BERKLUSTER [idxtab1c2] PADA TAB1
(
c2 ASC
)
DENGAN (PAD_INDEX = NONAKTIF, STATISTICS_NORECOMPUTE = NONAKTIF, SORT_IN_TEMPDB = NONAKTIF, DROP_EXISTING = NONAKTIF, ONLINE = NONAKTIF, ALLOW_ROW_LOCKS = AKTIF, ALLOW_PAGE_LOCKS = AKTIF)
Buat tabel tab2
(C1 Int, C2 Date, C3 Varchar(10))
Sisipkan ke Tab2
nilai (1, '2000-01-01', 'tes')
BUAT INDEKS PENYIMPAN KOLOM BERKLUSTER [CCI_tab2] AKTIF [TAB2] DENGAN (DROP_EXISTING = NONAKTIF)
GO
Membuat tabel T
([runId] int bukan null, [scalingFactor] mengambang bukan null)
-- KUERI REPRO. Batch di bawah ini diharapkan akan mengembalikan baris, tetapi kami tidak mendapatkannya
Memotong tabel T
NYATAKAN @date TANGGAL, @numDates INT
SISIPKAN KE DALAM NILAI T(1, 1)
NYATAKAN @date TANGGAL, @numDates INT
SELECT @date = max(R.c2) , @numDates = COUNT(berbeda R.c2)
DARI TAB1 R
GABUNGAN DALAM t D PADA R.c1 = D.runId
Pilih *
DARI tab2 S -- CCI
WHERE S.c2 = @date
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah dalam produk Microsoft sebagaimana tercantum di bagian "Berlaku untuk".