Ошибка SQL: Arithmetic overflow error converting numeric to data type numeric

25.08.21

База данных - Администрирование СУБД

Считаю количество строк в таблицах БД. Выскакивает ошибка. Привожу описание моего случая и решение.

По запросу "Arithmetic overflow error converting numeric to data type numeric" есть куча обсуждений и очень мало записано решений. Мой случай, вероятно, частный, но кого-то подтолкнет в направлении "куда копать".

SQL 2016 Standard
Платформа 8.3.18

При выполнении запросов к БД типа:

Выбрать Сумма(1) Из РегистрНакопления.ТоварыКПоступлению
Выбрать Сумма(1) Из Документ.ПриобретениеТоваровУслуг.Товары

Когда, количество строк > ~10 000 000, выдавалась ошибка:

Microsoft SQL Server Native Client 11.0: Arithmetic overflow error converting numeric to data type numeric.
HRESULT=80040E57, SQLSrvr: SQLSTATE=22003, state=8, Severity=10, native=8115, line=1

Решение

Выбрать Сумма(Выразить(1 КАК Число(15,0))) Из РегистрНакопления.ТоварыКПоступлению

Добавлено преобразование типа Число к конкретной длине. Баг перестал воспроизводиться.

Коллеги, если сталкивались с ошибкой, в комментариях опишите причину сбоя, и, если знают - другие способы устранения.

Ошибка SQL Arithmetic overflow error

См. также.

Администрирование СУБД Системный администратор Платформа 1С v8.3 Бесплатно (free)

Ситуация: при обновлении серверной базы данных произошёл сбой и теперь невозможно войти ни в конфигуратор, ни в 1С:Предприятие по причине ошибки, вынесенной в заголовок. Рецепт лечения.

24.05.2024    1262    Kernelbug    9    

19

Администрирование СУБД Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

При хранении файлов в томах на диске они иногда исчезают. Разбираемся, почему.

23.05.2024    7860    human_new    18    

54

Администрирование СУБД Системный администратор Платформа 1С v8.3 Бесплатно (free)

Краткое описание шагов по установке, настройке и применению инструмента 1С:Исполнитель на операционной системе РедОС, а также по борьбе с некоторыми возникающими ошибками.

06.05.2024    734    artemusII    0    

1

Администрирование СУБД Системный администратор Программист Платформа 1С v8.3 Бесплатно (free)

Статья для тех, кто столкнулся с необходимостью пересчета итогов для "больших таблиц" и нет возможности поставить на паузу ИБ для проведения работ.

25.04.2024    2537    virustam    33    

12

Администрирование СУБД Системный администратор Платформа 1С v8.3 1С:Бухгалтерия 3.0 Россия Бесплатно (free)

Иногда в конфигурации 1С:Бухгалтерский учет v3.0 возникает ситуация, когда программа всем пользователям выдает предупреждение, что авторизация не выполнена и работа программы будет завершена. Данная инструкция позволяет решить возникшую проблему.

24.04.2024    1142    Yan_Malyakov    0    

3

Администрирование СУБД Системный администратор Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье показано, как устранить ошибку выполнения скрипта "Создать сервис RAGENT" в системах 1С:Центр контроля качества или в 1С:Центр автоматизации. Будет полезна администраторам ЦКК и ЦА, которые только начали знакомство с этими системами.

18.04.2024    494    artemusII    0    

8

HighLoad оптимизация Администрирование СУБД Системный администратор Платформа 1С v8.3 1С:Розница 2 Розничная и сетевая торговля (FMCG) Россия Бесплатно (free)

При подготовке к обновлению возникли проблемы на стадии тестирования и исправления базы данных, также при создании файлов РИБ для магазинов.

16.04.2024    565    xKaskadx    4    

2

Администрирование СУБД Системный администратор Платформа 1С v8.3 Бесплатно (free)

Установить купленную базовую конфигурацию 1С и получить лицензию на MAC OS не так просто, как кажется на первый взгляд и как хотелось бы. Официально в системных требованиях на базовую конфигурации 1С пишет всякие виндовсы и пару-тройку линуксов. МакОс там нет. В статье расскажу, как все-таки поставить на Мак базовую конфигурацию 1С.

11.04.2024    601    pahmutov    0    

3
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kser87 2448 25.08.21 12:29 Сейчас в теме
Видимо превышается предельное значение для типа int . Можно создать втшку и посмотреть, какой тип он назначит для поля 1
2. user1350278 25.08.21 14:25 Сейчас в теме
int до 2 147 483 647, не думаю, что такое кол-во записей в регистре.

Скорее всего, это игры 1С/MSSQL с precison numeric. Например, рассматривает 1 как Numeric(7,0), пытаясь к нему преобразовать результат СУММА(1).

P.S.
В конкретном примере использование "Сумма", по-моему, неоправдано, ибо Количество(*), скорее-всего выполнится верно.
( а если есть еще индекс по одному из измерений и делать COUNT(OUR_FIELD), то и full index scan не так страшен).

Советы по использованию "Выразить", наверное, относятся к случаю, когда вместо литерала суммируют что-то более осмысленное.

Лезть в профайлер и смотреть во что 1С превращает 1, неохота.
3. SerVer1C 781 25.08.21 16:29 Сейчас в теме
Для подсчета кол-ва записей лучше юзать:
Выбрать Количество(1) Из РегистрНакопления.ТоварыКПоступлению

ну а если нужна сумма, то можно применить такой костыль:
Выбрать Сумма(0.001) Из РегистрНакопления.ТоварыКПоступлению
получите сумму в тысячах )
Nikola23; triviumfan; kser87; +3 Ответить
4. triviumfan 94 31.08.21 15:22 Сейчас в теме
Давно заметил эту ошибку, но создавать публикацию по этому поводу...
5. Nikola23 700 01.09.21 08:12 Сейчас в теме
(4) мысль автора комментария по-моему осталась не законченной.
Заметил и что?
Если решил, то как?
Если знаете решение - почему не поделиться с сообществом?
Кто знает о вашем достижении?

Если по существу - то вы молодец.
6. triviumfan 94 01.09.21 15:53 Сейчас в теме
(5) Ну, а зачем мне делиться, если эта ошибка стара как... и гуглиться за секунды.
https://forum.mista.ru/topic.php?id=545119
http://www.gilev.ru/arithmeticoverflow/
https://forum.infostart.ru/forum9/topic183137/

(5)
Если по существу - то вы молодец.

Не могу ответить тем же.
7. Nikola23 700 02.09.21 10:13 Сейчас в теме
(6) наверное, мой навык гугления не такой как ваш.
Видел эту статью.
Там SQL древний описан и я не стал ее читать (зря).

Ничего страшного, если решение будет записано еще раз с указанием более свежей версии SQL.
8. alexey.kutya 305 13.01.23 23:46 Сейчас в теме
У меня такая ошибка возникла, когда дробная часть числа получаемого в запросе выражением превысила какое-то количество знаков. Помогло ВЫРАЗИТЬ с ограничением знаков дробной части.
Оставьте свое сообщение