算术溢出错误将数字转换为数据类型数字

时间:2013-05-31 17:01:30

标签: sql

在过去的几周内,我的客户的客户在他们的网站上运行任何类型的查询时都收到了以下错误。我不熟悉SQL,所以任何帮助都将不胜感激。

  

堆栈追踪:

     

[SqlException(0x80131904):转换算术溢出错误   数字到数据类型数字。]
  System.Data.SqlClient.SqlConnection.OnError(SqlException异常,   Boolean breakConnection)+1951066
  System.Data.SqlClient.SqlInternalConnection.OnError(SQLEXCEPTION   exception,Boolean breakConnection)+4847051
  System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject   stateObj)+194 System.Data.SqlClient.TdsParser.Run(RunBehavior)   runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,   BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject   stateObj)+2392 System.Data.SqlClient.SqlDataReader.HasMoreRows()   +157 System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)+197 System.Data.SqlClient.SqlDataReader.Read()+ 9
  System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)   +78 System.Data.Common.DataAdapter.FillFromReader(DataSet数据集,DataTable数据表,String srcTable,DataReaderContainer dataReader,   Int32 startRecord,Int32 maxRecords,DataColumn parentChapterColumn,   对象parentChapterValue)+164
  System.Data.Common.DataAdapter.Fill(DataSet dataSet,String srcTable,   IDataReader dataReader,Int32 startRecord,Int32 maxRecords)+353
  System.Data.Common.DbDataAdapter.FillInternal(DataSet数据集,   DataTable [] datatables,Int32 startRecord,Int32 maxRecords,String   srcTable,IDbCommand命令,CommandBehavior行为)+164
  System.Data.Common.DbDataAdapter.Fill(DataSet dataSet,Int32   startRecord,Int32 maxRecords,String srcTable,IDbCommand命令,   CommandBehavior行为)+287
  System.Data.Common.DbDataAdapter.Fill(DataSet dataSet,String   srcTable)+92
  System.Web.UI.WebControls.SqlDataSourceView.ExecuteSelect(DataSourceSelectArguments   参数)+1297 System.Web.UI.WebControls.Repeater.GetData()+35
  System.Web.UI.WebControls.Repeater.CreateControlHierarchy(布尔   useDataSource)+220
  System.Web.UI.WebControls.Repeater.OnDataBinding(EventArgs e)+51
  System.Web.UI.WebControls.Repeater.DataBind()+75
  System.Web.UI.WebControls.Repeater.EnsureDataBound()+55
  System.Web.UI.WebControls.Repeater.OnPreRender(EventArgs e)+15
  System.Web.UI.Control.PreRenderRecursiveInternal()+80
  System.Web.UI.Control.PreRenderRecursiveInternal()+171
  System.Web.UI.Control.PreRenderRecursiveInternal()+171
  System.Web.UI.Control.PreRenderRecursiveInternal()+171
  System.Web.UI.Control.PreRenderRecursiveInternal()+171
  System.Web.UI.Page.ProcessRequestMain(布尔   includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)   842

2 个答案:

答案 0 :(得分:1)

要看的地方是:

  1. 有一个更新查询正在尝试使用更大数量的数据类型(如单个或双重)更改int(或其他一些小数字类型)。
  2. 正在尝试使用相同条件的isert。
  3. 专注于使用数字字段查找更改值的内容,并检查要尝试进行这些更改的数据类型。当你看到不匹配时,这很可能是你的罪魁祸首。

答案 1 :(得分:0)

sum(col1)更改为sum(cast(col1 as bigint))以动态更改当前列的类型,或在表格设计模式下更改它。