java.lang.RuntimeException: com.microsoft.sqlserver.jdbc.SQLServerException: Arithmetic overflow error converting numeric to data type numeric.
......
这个报错很直接,一眼就看出来什么问题。由于产品的复杂性,当客户向我们报这个问题时,我们一下子查不出来是那个表(那个sql)引起的,因为很多表是在产品使用过程动态生成的。产品在实现时,表字段基本都给得很大了,出现这个问题很奇怪,怀疑是不是出现什么极端情况(比如,极大值除以极小值)。碰到这种问题,一开始要把涉及到的sql找出来,这样表、数据就可以出现了,然后再研究是那个字段、那个值会导致这个问题。
数据库是mssql server,sqlserver 提供了一个工具 SQL Server Profiler,利用这个工具可以找出对应的sql.
Open SQL Server Profiler(under Performance Toolsof MS SQLServer Studio) -> File -> New Trace, then connect to targetserver.