Ошибка 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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

HighLoad оптимизация Администрирование СУБД Программист Россия Бесплатно (free)

Если вы работаете с 1С на PostgreSQL и жалуетесь на тормоза — скорее всего, дело в join predicate pushdown, которого в стандартном PostgreSQL нет. В MS SQL Server этот механизм работает «из коробки», и при миграции именно запросы к виртуальным таблицам 1С бьют по производительности сильнее всего. В этой статье — реальный кейс от Postgres Professional с разбором плана выполнения, ручным экспериментом и доработкой планировщика СУБД, которая ускорила запросы от 22 до 54 000 раз.

16.06.2026    5494    postgres_professional    13    

9

HighLoad оптимизация Администрирование СУБД Системный администратор Программист 1С:Предприятие 8 Бесплатно (free)

Вышел релиз СУБД Tantor Postgres 18, и мы хотим рассказать о его новых возможностях для работы с приложениями на платформе "1С:Предприятие". В обзоре разберем улучшения планировщика, по традиции коснемся работы временных таблиц и не обойдем вниманием вспомогательные утилиты, которые упрощают поиск и диагностику проблем в высоконагруженных системах. За каждым пунктом - реальные запросы 1С, реальные рабочие базы и сотни часов тестирования!

16.06.2026    738    Tantor    7    

7

Администрирование СУБД Системный администратор Программист 1С:Предприятие 8 Россия Бесплатно (free)

База 1С за несколько лет эксплуатации разрослась, - стала большой, медленно работает, требует много места и времени для копирования и прочего обслуживания. Нужна ли обязательно свертка или можно обойтись более «мягкими» средствами. Делюсь своим опытном как для новых конфигураций, так и для старых УПП, УТ 10…

01.06.2026    5649    2ncom    30    

10

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

Статья рассказывает об опыте перевода больших баз с MSSQL на Postgres и годовой эксплуатации после перехода. Показано, с какими ограничениями утилиты ibcmd можно столкнуться при миграции больших баз и какие подходы помогают безопасно обходить эти проблемы. Приведены наиболее интересные кейсы, выявленные в эксплуатации: особенности настроек Postgres, поведение оптимизатора, тонкости работы логики и статистики, а также редкие, но критичные ситуации с производительностью. Материал будет полезен тем, кто планирует переход на Postgres и хочет заранее понимать реальные риски, подводные камни и проверенные практики их преодоления.

20.04.2026    6977    berserg    12    

25

Администрирование СУБД Программист Бесплатно (free)

Прокачиваем Постгрес с помощью пользовательских функций и процедур.

02.03.2026    2473    SerVer1C    3    

12

HighLoad оптимизация Администрирование СУБД 1С:Предприятие 8 Бесплатно (free)

В статье рассматриваются текущие возможности горизонтального масштабирования СУБД для 1С, а также какое решение предлагает Tantor Postgres.

02.02.2026    2572    Tantor    3    

8
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. kser87 2484 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 1103 25.08.21 16:29 Сейчас в теме
Для подсчета кол-ва записей лучше юзать:
Выбрать Количество(1) Из РегистрНакопления.ТоварыКПоступлению

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

Если по существу - то вы молодец.
6. triviumfan 102 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 712 02.09.21 10:13 Сейчас в теме
(6) наверное, мой навык гугления не такой как ваш.
Видел эту статью.
Там SQL древний описан и я не стал ее читать (зря).

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