Решение проблемы «Microsoft SQL Server Native Client 11.0: Запрос COMMIT TRANSACTION не имеет соответствующей инструкции BEGIN TRANSACTION»

Приложение на базе платформы «1С:Предприятие 8» отказалось запускаться. Вместо запуска ИБ пользователи получали ошибку «Microsoft SQL Server Native Client 11.0: Запрос COMMIT TRANSACTION не имеет соответствующей инструкции BEGIN TRANSACTION».

Оказалось, похожая проблема случается у многих, но детального и какого-то конкретного решения нет. Наткнулся на похожую тему форумов инфостарта, но решение сводилось к откату на ветку платформы 8.3.8. У нас применяется последняя доступная на сегодня версия 8.3.12.1924. Откатиться на предыдущий версию платформы не предоставляется возожным, т.к. версия конфигурации не позволяется работать на более низких версия 1С Передприятия, это требование применения исходит от поставщиков прикладного решения.

Не сумев найти конкретного решения, начал решать проблему в следующем порядке:

  1. Тормознул все сервисы (MS SQL, Сервер 1С)
  2. Почистил весь кэш (на сервере);
  3. После чистки кэша перезапустил сервисы, конфигуратор стал запускаться, но режим предприятия по-прежнему нет (либо какое то время работает и опять вылетает ошибка).
  4. Попробовал выгрузить информационную базу. Получилось. Загрузил ее в файловый вариант и запустил тесты в конфигураторе (Проверка логической целостности, реиндексация таблиц).
  5. Увеличил опцию на SQL-сервере «Network packet size» до 16383 (максимально возможный по заявлению поставщика продукта).
  6. Выгрузил вариант файловой базы в dt и загрузил в чистую базу на SQL.
  7. Все заработало.

Увеличение опции на SQL-сервере «Network packet size» помогло решить проблему с вылетом.

Как увеличить размер сетевого пакета:

Параметр network packet size используется для установки размера пакета (в байтах), применяемого во всей сети. Пакеты — это фрагменты данных фиксированного размера, с помощью которых осуществляется передача запросов и ответов между клиентами и серверами. Размер пакетов по умолчанию составляет 4096 байт.

Если приложение осуществляет массовое копирование или отправляет/получает большие объемы данных типа text или image, увеличение размера пакета может повысить эффективность работы системы за счет сокращения числа сетевых операций чтения и записи. Если приложение отправляет и получает небольшие объемы информации, размер пакета можно уменьшить до 512 байт, чего в большинстве случаев достаточно.

Ограничения:

  • Максимальный размер сетевого пакета для шифрованных соединений составляет 16 383 байта.

Настройки параметра конфигурации сервера network packet size в SQL Server 2019:

Использование среды SQL Server Management Studio

Настройка параметра network packet size

  1. В обозревателе объектов щелкните правой кнопкой мыши сервер и выберите пункт Свойства.
  2. Щелкните узел Дополнительно .
  3. На вкладке Сетьвыберите значение в поле Размер сетевого пакета .

Параметр вступает в силу немедленно, без перезапуска сервера.