IDENTITY 轉(zhuǎn)換為數(shù)據(jù)類型 int 時(shí)出現(xiàn)算術(shù)溢出錯(cuò)誤
問(wèn)題描述:網(wǎng)站前后臺(tái)訪問(wèn)404,異常日志下記錄
消息:將DENTITY轉(zhuǎn)換為數(shù)據(jù)類型int時(shí)出現(xiàn)算術(shù)溢出錯(cuò)誤。
在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表發(fā)現(xiàn)為空,
在 SQL Server 中,即使表里 沒(méi)有一行數(shù)據(jù),IDENTITY 列的種子(seed)或當(dāng)前自增值(current identity value) 仍可能非常大 —— 甚至超過(guò) int 的最大值(2,147,483,647)。
用以下命令檢查該表當(dāng)前的 IDENTITY 值:
SELECT IDENT_CURRENT('PE_AttackDefense_IpRequestRecord') AS CurrentIdentityValue;
TRUNCATE table PE_AttackDefense_IpRequestRecord后正常,屬于SA版本問(wèn)題,臨時(shí)手動(dòng)處理。