Optima замедлилась после обновления SQL Server 2025? Причина и решение

После обновления SQL Server с версии 2022 до 2025 новое соединение с базой занимало 120 мс вместо 2 мс, а Optima соединяется с базой сотни раз. Наши замеры, причина и решение, которое сработало у нашего клиента.

График: новое соединение с SQL-логином в SQL Server 2025 занимало 118,8 мс, а после исправления 0,8 мс (открывает изображение в полном размере)

У одного из наших клиентов после обновления SQL Server с версии 2022 до 2025 замедлилось проведение документов в Comarch ERP Optima. Сама Optima уже была в последней версии (2026.5), так что изменился только сервер базы данных. На сервере с Windows Server 2019 работает несколько сотен баз компаний, а сотрудники пользуются Optima в основном через удалённый рабочий стол.

Симптомы

Проведение каждого документа занимало 4 секунды независимо от типа: счёт на закупку, на продажу или документ из KSeF. Проведение пакета документов занимало около 49 секунд. Сотрудники сообщали, что операции, которые раньше занимали секунды, теперь занимают минуты.

Окно Optima «Проведение документа»: для каждого документа время выполнения 00:00:04 (открывает изображение в полном размере)
Окно проведения в Optima: 4 секунды на каждый документ. Номера документов и суммы мы закрасили.

Что мы проверили и исключили

Прежде чем найти причину, мы измерили сервер в рабочее время. Эти элементы работали нормально:

  • Диск: чтение данных ок. 0,2 мс, запись журнала транзакций 3–4 мс.
  • Процессор: SQL Server использовал в среднем меньше одного ядра из восьми.
  • Блокировки: в замерах каждую секунду их не было.
  • Сеть на стороне сервера: ожидание ок. 1 мс.
  • Антивирус: исключения Microsoft Defender для SQL Server ничего не изменили.

Причина: более медленная проверка паролей в SQL Server 2025

SQL Server 2025 сохраняет и проверяет пароли SQL-логинов алгоритмом PBKDF2 (100 000 повторений SHA-512). Microsoft относит это изменение к известным проблемам SQL Server 2025, потому что оно замедляет вход. Старые пароли сервер сам переписывает в новый формат при первом успешном входе после обновления.

По нашим замерам новое соединение с SQL-логином занимало в среднем 118,8 мс, а с учётной записью Windows – 2,4 мс.

Для одного соединения 120 мс не имели бы значения. Optima соединяется с базой SQL-логином CDNOperator и открывает очень много новых соединений: при одном пакете проведения мы насчитали ок. 166 новых соединений за 49 секунд, а за 15 минут обычной работы бюро – 2 481 вход. При каждом из них сервер теперь проверяет пароль новым, более медленным способом.

По нашей оценке, в пакете длительностью 49 секунд одни только входы занимали 12–20 секунд. Остальное – запросы к базе и работа самой программы. Так что входы дают большую часть задержки, но не всю.

Как проверить, Ваш ли это случай

В SQL Server Management Studio достаточно одного запроса:

SELECT name, CONVERT(varchar(6), password_hash, 1) AS hash_type
FROM sys.sql_logins;

Результат 0x0300 означает новый формат PBKDF2, а 0x0200 – старый, быстрый формат из SQL Server 2022.

Что помогло: флаг трассировки 4671

Это экспериментальное решение. Флага трассировки 4671 нет в документации Microsoft, Microsoft его не поддерживает, а часть специалистов SQL его не рекомендует. У нашего клиента он сработал. Мы действовали в таком порядке:

  1. Полная резервная копия всех баз, в том числе системной master, в которой хранятся логины и пароли. Многие простые скрипты резервного копирования пропускают системные базы.
  2. Сохранение текущего password_hash логина CDNOperator, чтобы можно было вернуть прежний пароль.
  3. Тест флага на временном тестовом логине, после рабочего времени.
  4. Включение флага командой DBCC TRACEON(4671, -1) и параметром запуска -T4671 в SQL Server Configuration Manager, чтобы он действовал и после перезапуска.
  5. Новый пароль CDNOperator, заданный в Optima при включённом флаге (Инструменты, Сервер базы данных, Смена пароля пользователя «CDNOperator»), с опцией «Сохранить пароль для всех пользователей Windows». Optima нужно запустить от имени администратора, иначе общий файл с паролем не обновится.
  6. Новый пароль на каждом компьютере с собственной установкой Optima, в Службе автоматических операций и в каждой программе, которая использует этот логин.

Результаты на тестовом логине (10 попыток на каждый шаг):

  • Без флага: 118,8 мс на новое соединение.
  • Флаг включён, пароль ещё в формате PBKDF2: 116,8 мс. Сам вход формат не меняет.
  • Флаг включён и тот же пароль задан заново: 0,8 мс.
  • Флаг выключен: 121,1 мс. Первый вход переписал формат обратно на PBKDF2.
Результат запроса в SQL Server Management Studio: логин CDNOperator в формате 0x0200 и флаг 4671 включён глобально (открывает изображение в полном размере)
После смены пароля при включённом флаге: формат 0x0200 и флаг 4671 активен глобально.
Окно Optima «Вход на сервер баз данных» с сообщением о смене пароля логина CDNOperator (открывает изображение в полном размере)
Такое окно увидит сотрудник на компьютере с собственной Optima после смены пароля. Имя сервера мы закрасили.

Результат

Новое соединение с SQL-логином сократилось с 118,8 мс до 0,8 мс. Проведение одного документа теперь занимает ок. 3 секунд вместо 4. Это результат одного теста. Сотрудники, которые подключаются к серверу через удалённый рабочий стол, говорят, что Optima работает намного лучше. Один и тот же пакет документов до и после изменения на одном компьютере мы ещё не сравнивали.

На что обратить внимание

  • Сам флаг ничего не даёт. Пароль нужно задать заново при включённом флаге.
  • Флаг мы не выключаем. Без него SQL Server при первом входе возвращается к PBKDF2: программа работает дальше, но снова медленно.
  • После каждого обновления SQL Server мы проверяем флаг и формат пароля. Следующее обновление может изменить работу флага. У нас после обновления безопасности KB5126967 флаг продолжал работать.
  • Возврат к SQL Server 2022 – не простой выход: базы и резервные копии из SQL Server 2025 нельзя восстановить на версии 2022.
  • Программы, которые всё ещё входят со старым паролем, видны в журнале SQL Server (ERRORLOG, ошибка 18456). У нас это было в том числе старое неиспользуемое веб-приложение на сервере.
  • Служба автоматических операций в Optima 2026.5 не работает под учётной записью LocalSystem. Ей нужна отдельная учётная запись Windows, а файл с паролем должен лежать в профиле этой записи.
  • Пароль CDNOperator мы не передаём посторонним. Этот логин обычно имеет доступ к базам всех компаний в Optima.
  • Для компьютеров, которые соединяются с базой через VPN или Wi-Fi, задержка сети добавляется к каждому из многих соединений Optima. Поэтому мы рекомендуем работать через удалённый рабочий стол на сервере.

Проверка флага после обновления:

DBCC TRACESTATUS(4671);

Источники

Сделаем это за Вас

Если Optima замедлилась после обновления SQL Server, мы найдём причину и внесём изменение с резервной копией и планом возврата. Подробнее о том, как мы заботимся об IT бухгалтерских бюро. Напишите на kontakt@proop.pl или позвоните: +48 690 504 074.

Контакты

Начнём с разговора

В первом разговоре Вы рассказываете нам о ситуации в компании, а мы оцениваем, можем ли помочь.