Apakah ada cara yang efisien untuk melihat penyebab "String atau data biner akan terpotong"?

13

Ini adalah tindak lanjut dari pertanyaan ini . Ini juga terkait dengan permintaan fitur ini dari Microsoft.

Namun, bertahun-tahun telah berlalu dan beberapa rilis utama mencapai pasar sejak dilaporkan.

Pertanyaan: apakah SQL Server 2017 menyediakan mekanisme untuk memudahkan mencari tahu penyebab utama kesalahan ini? Atau sulit untuk menyelidiki seperti sekitar 9 tahun yang lalu ketika masalah ini dilaporkan?

Alexei
sumber
Saya menghabiskan setidaknya 4 jam seminggu untuk debugging kesalahan tunggal ini dan SQL bahkan tidak dalam deskripsi pekerjaan saya.
Tonny

Jawaban:

20

Belum ada perubahan. SQL Server 2017 masih menawarkan pesan kesalahan yang sama dan tidak menyediakan mekanisme untuk menemukan baris / kolom yang menyinggung.

Item Connect ini memiliki lebih dari 1.600 suara saat Connect dihentikan:

Komentar terbaru di sana, dari Microsoft, adalah ini:

Pembaruan terbaru - pengembang yang mengerjakannya memahami tantangan yang terlibat dalam membuat perbaikan penuh. Mungkin sulit untuk menyelami informasi tentang kolom yang diperlukan untuk menghasilkan pesan kesalahan lengkap hingga fungsi konversi yang sebenarnya sedemikian rupa sehingga tidak akan memengaruhi memasukkan atau memperbarui kinerja. Kami dapat menerapkan sesuatu yang murah dalam jangka pendek seperti mencatat jenis dan panjang data yang terpotong. Masih terlalu dini untuk mengetahui kapan perbaikan seperti itu akan mencapai rilis yang terlihat oleh publik.

Yang terbaik yang dapat saya sarankan adalah memilih item itu (dan mengomentarinya, menggambarkan nilai bisnis yang akan ditambahkan untuk Anda).

Aaron Bertrand
sumber
+1. Untuk menambahkan salah satu cara yang kurang efisien untuk mengetahui culprint (jika Anda tidak memiliki log aplikasi) adalah dengan menggunakan profiler dan filter (oleh host / pengguna / aplikasi / permintaan / dll). Juga ini bisa bermanfaat: nimblegecko.com/...
jean
3

Doa kami telah dijawab sebagaimana ditunjukkan oleh posting blog MDSN ini :

SQL Server 2019 memperkenalkan pesan baru, dengan informasi konteks tambahan.

Kesalahan seharusnya jauh lebih bermakna sekarang:

Msg 2628, Level 16, Status 1, Baris 14 Data string atau biner akan terpotong di tabel 'DbName.SchemaName.TableName', kolom 'Col'. Nilai terpotong: '...'.

Juga, kabar baiknya adalah bahwa perubahan ini akan di-porting pada tahun 2017 dan 2016:

Pesan baru ini juga di-backport ke SQL Server 2017 CU12 (dan SQL Server 2016 SP2 CU mendatang), tetapi tidak secara default. Anda harus mengaktifkan jejak flag 460 untuk mengganti pesan ID 8152 dengan 2628, baik di tingkat sesi atau server.

Alexei
sumber