KB4055758 - FIX: Perilaku yang tidak konsisten untuk mengembalikan kosong di akhir CHAR dan data BINARY dalam SQL Server

Berlaku Untuk
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

Gejala

Misalnya Anda memiliki tabel SQL Server Microsoft yang memiliki satu atau beberapa indeks yang terpasang di dalamnya. Saat Anda membuat kueri terhadap tabel, SQL Server mungkin melakukan pengisian data yang tidak konsisten untuk kolom CHAR dan BINARY. Perilaku yang tidak konsisten untuk mengembalikan kosong di akhir kolom data CHAR dan BINARY bergantung pada kondisi berikut ini:

  • Pengaturan ANSI_PADDING saat kolom dibuat dalam tabel SQL Server.
  • Keputusan untuk melakukan pemindaian tabel atau pencarian indeks pada kolom.

Penyebab

Dalam skenario tertentu, SQL Server dapat melakukan optimisasi yang memungkinkannya melewati banyak operasi untuk pengiriman data yang lebih cepat. Masalah ini terjadi karena SQL Server tidak mengenali bahwa optimisasi tidak dapat diterapkan untuk skenario di atas.

Informasi Selengkapnya

Perilaku SQL Server ini tidak sesuai dengan perilaku yang didokumentasikan dalam artikel berikut: Menggunakan data Char dan Varchar.

Catatan

Jika ANSI_PADDING AKTIF saat kolom char NULL dibuat, kolom tersebut berakibat sama seperti kolom char NOT NULL: nilai diisi kanan dengan ukuran kolom. Jika ANSI_PADDING NONAKTIF saat kolom char NULL dibuat, kolom tersebut berperilaku seperti kolom varchar dengan ANSI_PADDING diatur NONAKTIF: kosong di belakang akan dipotong.

Resolusi

Masalah ini telah diperbaiki dalam pembaruan kumulatif berikut untuk SQL Server:

Pembaruan Kumulatif 2 untuk SQL Server 2017

Pembaruan Kumulatif 9 untuk SQL Server 2016

Pembaruan Kumulatif 6 untuk SQL Server 2016 SP1

Pembaruan Kumulatif 8 untuk SQL Server 2014 SP2

Pembaruan Kumulatif 7 untuk SQL Server 2014 SP1

Tentang pembaruan kumulatif 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 2017

Pembaruan kumulatif terbaru untuk SQL Server 2016

Pembaruan kumulatif terbaru untuk SQL Server 2014

Status

Microsoft telah mengonfirmasi bahwa ini adalah masalah dalam produk Microsoft yang tercantum di bagian "Berlaku untuk"

Referensi

Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.