IDENTITY 转换为数据类型 int 时出现算术溢出错误
问题描述:网站前后台访问404,异常日志下记录
消息:将DENTITY转换为数据类型int时出现算术溢出错误。
在PowerEasy.WebSite.HttpModules.CcAttackDefenseModule.LogRequest(String ip, String url, RequestType requestType)
在 PowerEasy.WebSite.HttpModules.CcAttackDefenseModule.CheckBlackListAndAttack(String ip, String ipRange, String url, IPVersion iPVersion, DateTime& firstTime, Int32& attackCount, Int32& attackFeaturesSecond, AttackFeature& attackFeature)
在 PowerEasy.WebSite.HttpModules.CcAttackDefenseModule.ApplicationBeginRequest(Object sender, EventArgs e)
源文件:(null)
异常堆栈: 在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
解决方法:
查询PE_AttackDefense_IpRequestRecord表发现为空,
在 SQL Server 中,即使表里 没有一行数据,IDENTITY 列的种子(seed)或当前自增值(current identity value) 仍可能非常大 —— 甚至超过 int 的最大值(2,147,483,647)。
用以下命令检查该表当前的 IDENTITY 值:
SELECT IDENT_CURRENT('PE_AttackDefense_IpRequestRecord') AS CurrentIdentityValue;
TRUNCATE table PE_AttackDefense_IpRequestRecord后正常,属于SA版本问题,临时手动处理。
