sql - T-SQL : An error occurred while executing batch. 错误消息是:从 MyTable 中选择 * 的算术溢出

标签 sql sql-server tsql sql-server-2005 windows-server-2003-r2

我正在做一个像这样的简单查询:

select * from MyTable

这会导致以下错误:

An error occurred while executing batch. Error message is: Arithmetic Overflow

我可以运行 select top 14 * from MyTable 并且它没有问题但是在第 15 个值时发生错误,select top 15 * from MyTable 显示算术溢出错误。

该表由数据类型为:intfloatsmallint 的列组成。

我已确认该错误未发生在 intsmallint 列中,因此它发生在 float 列中。

两个问题:

  • 既然我只选择了现有值,那么一开始怎么会发生这种情况?
  • 如何查找和查看导致错误的具体值?

Microsoft Windows Server 2003 R2 Standard Edition with Service Pack 2 上运行 Microsoft SQL Server 2005 - 9.00.5057.00

设计更新:

USE [myDB]
GO
/****** Object:  Table [dbo].[MyTable]    Script CMte: 12/10/2019 10:35:13 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[MyTable](
    [DeliveryYearID] [int] IDENTITY(1,1) NOT NULL,
    [DeliveryID] [int] NOT NULL,
    [DeliveryYear] [int] NOT NULL,
    [VolumeDelivery_H] [int] NOT NULL CONSTRAINT [DF__tblSaleOb__Volum__74C75C08]  DEFAULT (0),
    [VolumeDelivery_S] [int] NOT NULL CONSTRAINT [DF__tblSaleOb__Volum__75BB8041]  DEFAULT (0),
    [SurchargeSale_fast] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__Surch__76AFA47A]  DEFAULT (0),
    [SurchargeAdjust_fast] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__Surch__77A3C8B3]  DEFAULT (0.0),
    [SurchargeSale_moving] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__Surch__7897ECEC]  DEFAULT (0),
    [SurchargeAdjust_moving] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__Surch__798C1125]  DEFAULT (0.0),
    [FixedCharge_fast] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__Fixed__7A80355E]  DEFAULT (0),
    [FixedCharge_moving] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__Fixed__7B745997]  DEFAULT (0),
    [OfferedPriceP1_Edit_fast] [float] NOT NULL,
    [OfferedPriceP2_Edit_fast] [float] NOT NULL,
    [OfferedPriceP3_Edit_fast] [float] NOT NULL,
    [OfferedPriceP4_Edit_fast] [float] NOT NULL,
    [OfferedSurcharge_Edit_moving] [float] NOT NULL,
    [movingTak_moving] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__movingT__7C687DD0]  DEFAULT (0),
    [movingTakPremie_moving] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__movingT__7D5CA209]  DEFAULT (0),
    [C_VolumeDelivery] [float] NOT NULL,
    [C_ChargePerUnit] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Cha__7E50C642]  DEFAULT (0),
    [C_SurchargeBase] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Sur__7F44EA7B]  DEFAULT (0),
    [C_VolumeSurcharge_moving] [float] NOT NULL,
    [C_VolumeCost] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__00390EB4]  DEFAULT (0),
    [C_VolumeCostP1] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__012D32ED]  DEFAULT (0),
    [C_VolumeCostP2] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__02215726]  DEFAULT (0),
    [C_VolumeCostP3] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__03157B5F]  DEFAULT (0),
    [C_VolumeCostP4] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__04099F98]  DEFAULT (0),
    [C_VolumeDeliveryP1] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__04FDC3D1]  DEFAULT (0),
    [C_VolumeDeliveryP2] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__05F1E80A]  DEFAULT (0),
    [C_VolumeDeliveryP3] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__06E60C43]  DEFAULT (0),
    [C_VolumeDeliveryP4] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__07CM307C]  DEFAULT (0),
    [C_SurchargUYNrmin_fast] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Sur__08CE54B5]  DEFAULT (0),
    [C_SurchargUYNrminP1_fast] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Sur__09C278EE]  DEFAULT (0),
    [C_SurchargUYNrminP2_fast] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Sur__0AB69D27]  DEFAULT (0),
    [C_SurchargUYNrminP3_fast] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Sur__0BAAC160]  DEFAULT (0),
    [C_SurchargUYNrminP4_fast] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Sur__0C9EE599]  DEFAULT (0),
    [C_movingSurcharge_moving] [float] NOT NULL,
    [C_EffectSurcharge_moving] [float] NOT NULL,
    [C_BalanceSurcharge_moving] [float] NOT NULL,
    [C_ProfileSurcharge_moving] [float] NOT NULL,
    [C_movingKundPrisTak_moving] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Spo__0D9309D2]  DEFAULT (0),
    [C_SeparateCost_fast] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Sep__0E872E0B]  DEFAULT (0),
    [C_SeparateCost_moving] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Sep__0F7B5244]  DEFAULT (0),
    [C_VolumePrice] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__106F767D]  DEFAULT (0),
    [C_VolumePriceP1] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__11639AB6]  DEFAULT (0),
    [C_VolumePriceP2] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__1257BEEF]  DEFAULT (0),
    [C_VolumePriceP3] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__134BE328]  DEFAULT (0),
    [C_VolumePriceP4] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Vol__14400761]  DEFAULT (0),
    [C_MonthFirst] [smallint] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Mon__15342B9A]  DEFAULT (0),
    [C_MonthLast] [smallint] NOT NULL CONSTRAINT [DF__tblSaleOb__C_Mon__16284FD3]  DEFAULT (0),
    [C_SurchargeSaleAdjust_AP] [float] NOT NULL CONSTRAINT [DF_MyTable_C_SurchargeSaleAdjust_AP]  DEFAULT (0),
    [C_HourlyPercentage] [float] NOT NULL CONSTRAINT [DF_MyTable_C_HourlyPercentage]  DEFAULT (0),
    [C_OffertRisk_fast] [float] NOT NULL CONSTRAINT [DF_MyTable_C_OffertRisk_fast]  DEFAULT (0.0),
    [C_SurchargeCertificate_fast] [float] NOT NULL CONSTRAINT [DF_MyTable_C_SurchargeCertificate_fast]  DEFAULT (0.0),
    [C_TB_Sum] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_TB___23582DBF]  DEFAULT (0),
    [C_TB_PerUnit] [float] NOT NULL CONSTRAINT [DF__tblSaleOb__C_TB___244C51F8]  DEFAULT (0),
    [SurchargeMarketInvestment_fast] [float] NOT NULL DEFAULT ((0)),
    [SurchargeMarketInvestment_moving] [float] NOT NULL DEFAULT ((0)),
    [C_StructuralCostSurcharge] [float] NOT NULL DEFAULT ((0)),
    [C_FASTPRISBAS_P0] [float] NOT NULL DEFAULT ((0)),
    [C_movingPRISBAS_P0] [float] NOT NULL DEFAULT ((0)),
    [C_StructuralCostSurcharge_fast] [float] NOT NULL DEFAULT ((0)),
    [C_StructuralCostSurcharge_moving] [float] NOT NULL DEFAULT ((0)),
    [C_StructuralCostCoefficient] [float] NOT NULL DEFAULT ((0.0)),
    [C_Other_Swedish_Storage] [float] NOT NULL DEFAULT ((0.0)),
    [C_Physical_Profile_Risk] [float] NOT NULL DEFAULT ((0.0)),
    [C_Transport_Plus_Storage_Included] [float] NOT NULL DEFAULT ((0.0)),
    [C_Transport_Plus_Storage_Separate] [float] NOT NULL DEFAULT ((0.0)),
    [C_Transmission_TE_IUP_HYU] [float] NOT NULL DEFAULT ((0.0)),
    [SellerSurcharge_IUP_HYU] [float] NOT NULL DEFAULT ((0.0)),
    [AdjustedSurcharge_IUP_HYU] [float] NOT NULL DEFAULT ((0.0)),
    [C_BuyOtherPe] [float] NOT NULL DEFAULT ((0.0)),
    [BuySurcharge_HYU_in_EFR] [float] NOT NULL DEFAULT ((0.0)),
    [BuySurcharge_EFR_in_HYU] [float] NOT NULL DEFAULT ((0.0)),
    [Offered_BuySurcharge_HYU] [float] NOT NULL DEFAULT ((0.0)),
    [C_Profile_Cost_CM_EFR] [float] NOT NULL DEFAULT ((0.0)),
    [C_Volume_Risk] [float] NOT NULL DEFAULT ((0.0)),
    [C_Other_LJR_BDU] [float] NULL,
    [CorrectionValue] [float] NOT NULL DEFAULT ((0)),
    [C_UYN_Exit_Cost] [float] NOT NULL DEFAULT ((0.0)),
    [C_CapacityCost_HYU_Included] [float] NOT NULL CONSTRAINT [DF_MyTable_C_CapacityCost_HYU_Included]  DEFAULT ((0)),
    [C_CapacityCost_HYU_Separate] [float] NOT NULL CONSTRAINT [DF_MyTable_C_CapacityCost_HYU_Separate]  DEFAULT ((0)),
    [C_SurchargeP1_Etage_HYU] [float] NOT NULL CONSTRAINT [DF_MyTable_C_SurchargeP1_Etage_HYU]  DEFAULT ((0)),
    [C_SurchargeP2_Etage_HYU] [float] NOT NULL CONSTRAINT [DF_MyTable_C_SurchargeP2_Etage_HYU]  DEFAULT ((0)),
    [C_SurchargeP3_Etage_HYU] [float] NOT NULL CONSTRAINT [DF_MyTable_C_SurchargeP3_Etage_HYU]  DEFAULT ((0)),
    [C_SurchargeP4_Etage_HYU] [float] NOT NULL CONSTRAINT [DF_MyTable_C_SurchargeP4_Etage_HYU]  DEFAULT ((0)),
    [C_SurchargeP1_Etage_EFR] [float] NOT NULL CONSTRAINT [DF_MyTable_C_SurchargeP1_Etage_HYU1]  DEFAULT ((0)),
    [C_SurchargeP2_Etage_EFR] [float] NOT NULL CONSTRAINT [DF_MyTable_C_SurchargeP2_Etage_HYU1]  DEFAULT ((0)),
    [C_SurchargeP3_Etage_EFR] [float] NOT NULL CONSTRAINT [DF_MyTable_C_SurchargeP3_Etage_HYU1]  DEFAULT ((0)),
    [C_SurchargeP4_Etage_EFR] [float] NOT NULL CONSTRAINT [DF_MyTable_C_SurchargeP4_Etage_HYU1]  DEFAULT ((0)),
    [C_Surcharge_Etage_HYU] [float] NOT NULL CONSTRAINT [DF_MyTable_C_Surcharge_Etage_HYU]  DEFAULT ((0)),
    [C_Surcharge_Etage_EFR] [float] NOT NULL CONSTRAINT [DF_MyTable_C_Surcharge_Etage_EFR]  DEFAULT ((0)),
 CONSTRAINT [MyTable2_PK] PRIMARY KEY NONCLUSTERED 
(
    [DeliveryYearID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[MyTable]  WITH CHECK ADD  CONSTRAINT [MyTable3_MyTable_FK1] FOREIGN KEY([DeliveryID])
REFERENCES [dbo].[MyTable3] ([DeliveryID])
ON DELETE CASCADE
GO
ALTER TABLE [dbo].[MyTable] CHECK CONSTRAINT [MyTable3_MyTable_FK1]

更新 2:

找到导致错误的列:[C_SurchargUYNrminP2_fast]

select top 15 [C_SurchargUYNrminP2_fast] from MyTable

更新 3:

测试了@LukStorms 建议的查询。收到错误:

Msg 9100, Level 23, State 2, Line 2 Possible index corruption detected. Run DBCC CHECKDB.

-- Change col1 to your actual primary key column(s), col2 to the column from the 2570 error, table1 to the table from the CHECKDB output
SELECT col1, col2 FROM table1
WHERE col2<>0.0 AND (col2 < 2.23E-308 OR col2 > 1.79E+308) AND (col2 < -1.79E+308 OR col2 > -2.23E-308)

https://support.microsoft.com/en-us/help/923247/troubleshooting-dbcc-error-2570-in-sql-server-2005-and-later-versions

更新 4:

命令:DBCC CHECKTABLE(N'dbo.MyTable') WITH DATA_PURITY

Msg 2570, Level 16, State 3, Line 1 Page (1:30707), slot 8 in object ID 1330364054, index ID 1, partition ID 72057615345844224, alloc unit ID 72057615349710848 (type "In-row data"). Column "C_SurchargUYNrminP2_fast" value is out of range for data type "float". Update column to a legal value.

最佳答案

感谢@DanGuzman 和评论中的其他人。

使用以下命令找到损坏的值:

DBCC CHECKTABLE(N'dbo.MyTable') WITH DATA_PURITY

Msg 2570, Level 16, State 3, Line 1 Page (1:30707), slot 8 in object ID 1330364054, index ID 1, partition ID 72057615345844224, alloc unit ID 72057615349710848 (type "In-row data"). Column "C_SurchargUYNrminP2_fast" value is out of range for data type "float". Update column to a legal value.

然后我可以使用 DBCC PAGE 找到损坏的值和相应的主键。有了这个帮助,我可以更新该值。

https://blogs.msdn.microsoft.com/sqlserverstorageengine/2006/06/10/how-to-use-dbcc-page/

DBCC TRACEON ( 3604 )
DBCC PAGE ( 'myDB' , 1 , 30707 , 3 )
DBCC TRACEOFF ( 3604 )

Slot 8 Column 1 Offset 0x4 Length 4

DeliveryID = 123

Slot 8 Column 33 Offset 0xf0 Length 8

C_SurchargUYNrminP2_fast = -1.#IND

关于sql - T-SQL : An error occurred while executing batch. 错误消息是:从 MyTable 中选择 * 的算术溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59263948/

相关文章:

SQL优化Case语句

c# - 防止 SQL 重复预订

sql - 针对 SQL 数据库自动完成名称

c# - 将 C# 枚举公开为数据库中的 View

sql-server - 根据单个不同列选择唯一行

mysql - 查找存储在特定列中的文本的大小

sql-server - 存储过程结果存入 Azure 数据仓库中的临时表

asp.net - 网站数据库设计(CMS)考虑和数据库驱动菜单的建议

sql - CASE WHEN EXIST 应该返回 1 时返回 0

sql - 使用函数匹配字符串