现象:
1:批量插入数据时,如果插入的数据精度不统一,最终入库的数据精度统一按最低的精度入库;
2:单条插入无此问题;
3:批量更新也无此问题;
4:出现问题与写入数据的精度顺序无关;
1:使用SQL Server Profiler 跟踪sql如下:
declare @p1 int
set @p1=3
exec sp_prepare @p1 output,N'@P0 bigint,@P1 datetime,@P2 datetime,@P3 decimal(38,1),@P4 nvarchar(4000),@P5 bigint,@P6 int,@P7 nvarchar(4000),@P8 nvarchar(4000),@P9 bigint,@P10 datetime,@P11 datetime,@P12 decimal(38,2),@P13 nvarchar(4000),@P14 bigint,@P15 int,@P16 nvarchar(4000),@P17 nvarchar(4000)',N'
INSERT INTO xxxx( INDIC_ID, PUBLISH_DATE,
PERIOD_DATE, DATA_VALUE, NOTES,
ETL_CRC, QA_RULE_CHK_FLG, QA_MANUAL_FLG,
QA_ACTIVE_FLG, CREATE_BY, CREATE_TIME,
UPDATE_BY, UPDATE_TIME
)
VALUES
( @P0 ,
@P1 ,
@P2 , @P3 , @P4 ,
@P5 , @P6 , 1,
1, @P7 ,GETDATE(),
@P8 ,GETDATE()
)
,
( @P9 ,
@P10 ,
@P11 , @P12 , @P13 ,
@P14 , @P15 , 1,
1, @P16 ,GETDATE(),
@P17 ,GETDATE()
) SELECT SCOPE_IDENTITY() AS _JTDS_GENE_R_ATED_KEYS_',1
select @p1
2:将批量插入的sql手动到数据库执行:正常
3:将库换成mysql:正常
4:将驱动由jtds换成 microsoft.sqlserver:异常,精度下降
解决方法:统一写入数据的精度
具体原因未知??