IDENTITY 转换为数据类型 int 时出现算术溢出错误

来源:本站原创 点击数: 发布时间:2026年01月13日

问题描述:网站前后台访问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版本问题,临时手动处理。