T-SQL: при выполнении пакета произошла ошибка. Сообщение об ошибке: арифметическое переполнение для выбора * из MyTable

Я делаю простой запрос следующим образом:

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)

https://support.microsoft.com/en-us/help/923247/troubleshooting-dbcc-error-2570-in-sql-server-2005-и-болеепоздниеверсии

Обновление 4:

Команда: DBCC CHECKTABLE(N'dbo.MyTable') WITH DATA_PURITY

Сообщение 2570, уровень 16, состояние 3, строка 1, страница (1:30707), слот 8 в идентификаторе объекта 1330364054, идентификатор индекса 1, идентификатор раздела 72057615345844224, идентификатор блока распределения 72057615349710848 (тип «Данные в строке»). Значение столбца «C_SurchargUYNrminP2_fast» выходит за пределы допустимого диапазона для типа данных «плавающий». Обновите столбец до допустимого значения.


person Ogglas    schedule 10.12.2019    source источник
comment
так как есть только 15 строк, можете ли вы опубликовать скрипку sql   -  person TheGameiswar    schedule 10.12.2019
comment
Есть ли в таблице один или несколько вычисляемых столбцов?   -  person Ed Harper    schedule 10.12.2019
comment
Я не понимаю, как вы могли получить эту ошибку с этим определением таблицы.   -  person GSerg    schedule 10.12.2019
comment
@TheGameiswar Обновлен вопрос с дизайном, 14 строк работают, а 15-я не работает. Тебе нужно что-то еще?   -  person Ogglas    schedule 10.12.2019
comment
@EdHarper Нет, по крайней мере, я не могу сказать. См. создание определений.   -  person Ogglas    schedule 10.12.2019
comment
@GSerg Я тоже этого не понимаю. По крайней мере, нашел колонку сейчас. Любая идея, как исследовать это дальше?   -  person Ogglas    schedule 10.12.2019
comment
Был ли загружен массив данных? Проверьте эта страница справки.   -  person LukStorms    schedule 10.12.2019
comment
У меня была похожая проблема, когда кому-то каким-то образом удалось сохранить Double.NaN как значение в таблице базы данных.   -  person PrfctByDsgn    schedule 10.12.2019
comment
@LukStorms Не знаю, система работает с 2006 года, и знаний об этих частях системы очень мало.   -  person Ogglas    schedule 10.12.2019
comment
@PrfctByDsgn Как вы нашли значение?   -  person Ogglas    schedule 10.12.2019
comment
На этой странице справки есть пример для поплавков. 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.2019
comment
@LukStorms Спасибо! К сожалению, он вернул ошибку Msg 9100, Level 23, State 2, Line 2 Possible index corruption detected. Run DBCC CHECKDB.. Буду исследовать дальше.   -  person Ogglas    schedule 10.12.2019
comment
Попробуйте запустить DBCC CHECKTABLE(N'dbo.MyTable') WITH DATA_PURITY. Я видел повреждение значений столбцов, вызванное неправильными значениями параметров в старых версиях SQL Server, до того, как были введены строгие проверки TDS.   -  person Dan Guzman    schedule 10.12.2019
comment
@DanGuzman Спасибо! Смотрите обновление для результата. В любом случае, я могу просмотреть фактическую стоимость?   -  person Ogglas    schedule 10.12.2019
comment
@DanGuzman Спасибо! Используется printopt 3 – page header plus detailed per-row interpretation, чтобы увидеть фактическое значение. Получил соответствующий первичный ключ таким образом, чтобы значение можно было обновить.   -  person Ogglas    schedule 10.12.2019


Ответы (1)


Спасибо @DanGuzman и всем остальным в комментариях.

Нашел поврежденные значения с помощью команды:

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

Сообщение 2570, уровень 16, состояние 3, строка 1, страница (1:30707), слот 8 в идентификаторе объекта 1330364054, идентификатор индекса 1, идентификатор раздела 72057615345844224, идентификатор блока распределения 72057615349710848 (тип «Данные в строке»). Значение столбца «C_SurchargUYNrminP2_fast» выходит за пределы допустимого диапазона для типа данных «плавающий». Обновите столбец до допустимого значения.

Затем я мог бы использовать 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 )

Слот 8 Столбец 1 Смещение 0x4 Длина 4

ID доставки = 123

Слот 8 Столбец 33 Смещение 0xf0 Длина 8

C_SurchargUYNrminP2_fast = -1.#IND

person Ogglas    schedule 10.12.2019