Saya mendapatkan kesalahan konversi di satu server tetapi tidak di server lain, keduanya memiliki database yang sama, yang satu adalah pengujian dan yang lainnya aktif, pengujian sebenarnya adalah salinan dari yang aktif tetapi agak lama. Server langsung telah mengaktifkan AlwaysOn. ketika saya menjalankan Print @@version di kedua server, saya mendapatkan yang berikut
Microsoft SQL Server 2016 (SP1-CU1) (KB3208177) - 13.0.4411.0 (X64)
Jan 6 2017 14:24:37
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows Server 2016 Standard 6.3 <X64> (Build 14393: ) (Hypervisor)
Ini adalah kueri sql yang saya jalankan
exec sp_executesql N'select * From DataTable
WHERE DT1 = @P1 AND DT2 = @P2
order by
cp1',N'@P1 smallint,@P2 smallint',0,0
kolom DT2 memiliki nilai campuran 1 dan 1BAC dan NULL tetapi saya tidak mengerti mengapa ini berfungsi di satu server tetapi tidak di server lain.
'01HP011'
bukan nilaiint
yang valid.int
s tidak memiliki huruf di dalamnya. - person Larnu   schedule 28.09.2020SmallInt
dan string dalam sebuah ekspresi, mis.DT2 = @P2
, string akan diubah menjadiSmallInt
. Anda dapat menggunakanCast
untuk memaksakan konversi dengan cara lain, mis.DT2 = Cast( @P2 as VarChar(10) )
. - person HABO   schedule 29.09.2020Try_Convert
untuk mengidentifikasi nilai-nilai buruk. - person HABO   schedule 29.09.2020