Я делаю простой запрос следующим образом:
select * from MyTable
Это приводит к следующей ошибке:
Произошла ошибка при выполнении пакета. Сообщение об ошибке: Арифметическое переполнение
Я могу запустить select top 14 * from MyTable
, и он работает без проблем, но на 15-м значении возникает ошибка, select top 15 * from MyTable
показывает ошибку арифметического переполнения.
Таблица состоит из столбцов с типами данных: int
, float
и smallint
.
Я подтвердил, что ошибка не возникает в столбцах int
или smallint
, поэтому она возникает в столбце float
.
Два вопроса:
- Как это может произойти, поскольку я выбираю только существующие значения?
- Как я могу найти и просмотреть конкретное значение, вызывающее ошибку?
Запуск Microsoft SQL Server 2005 - 9.00.5057.00
на Microsoft Windows Server 2003 R2 Standard Edition with Service Pack 2
.
Обновление с дизайном:
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. Получена ошибка:
Сообщение 9100, уровень 23, состояние 2, строка 2 Обнаружено возможное повреждение индекса. Запустите команду 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)
Обновление 4:
Команда: DBCC CHECKTABLE(N'dbo.MyTable') WITH DATA_PURITY
Сообщение 2570, уровень 16, состояние 3, строка 1, страница (1:30707), слот 8 в идентификаторе объекта 1330364054, идентификатор индекса 1, идентификатор раздела 72057615345844224, идентификатор блока распределения 72057615349710848 (тип «Данные в строке»). Значение столбца «C_SurchargUYNrminP2_fast» выходит за пределы допустимого диапазона для типа данных «плавающий». Обновите столбец до допустимого значения.
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)
Просто немного беспокоит, что в вашей таблице так много чисел с плавающей запятой О_о - person LukStorms   schedule 10.12.2019Msg 9100, Level 23, State 2, Line 2 Possible index corruption detected. Run DBCC CHECKDB.
. Буду исследовать дальше. - person Ogglas   schedule 10.12.2019DBCC CHECKTABLE(N'dbo.MyTable') WITH DATA_PURITY
. Я видел повреждение значений столбцов, вызванное неправильными значениями параметров в старых версиях SQL Server, до того, как были введены строгие проверки TDS. - person Dan Guzman   schedule 10.12.2019DBCC PAGE
а>.DBCC TRACEON(3604); --return output to client DECLARE @db_id int = DB_ID(); DBCC PAGE(1,30707, 1);DBCC TRACEOFF(3604);
. Информация может быть не особо полезной. Чтобы исправить это, самым простым способом может быть обновление значения проблемы до нуля, поскольку предполагаемое значение потеряно. - person Dan Guzman   schedule 10.12.2019printopt 3 – page header plus detailed per-row interpretation
, чтобы увидеть фактическое значение. Получил соответствующий первичный ключ таким образом, чтобы значение можно было обновить. - person Ogglas   schedule 10.12.2019