Как устранить ошибку СУБД «Недопустимое преобразование типов данных в записи» при добавлении базы на сервер 1С?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При развертывании новой информационной базы или переносе существующей базы на сервер «1С:Предприятия» 8.3 под управлением MS SQL Server администраторы могут столкнуться с критической ошибкой во время авторизации пользователя или запуска сеанса. Программа выдает невосстановимую ошибку при выполнении запроса POST к ресурсу /e1cib/login с пояснением: «Ошибка СУБД: Недопустимое преобразование типов данных в записи». При этом база данных может блокироваться в консоли кластера, не позволяя ни запустить сеанс, ни корректно отредактировать ее параметры.

Разберем подробнее причины возникновения этой неполадки и рассмотрим пошаговые способы ее устранения.

Причины возникновения ошибки

Проанализируем ситуацию: начиная с платформы версии 8.3.8, разработчики 1С существенно переработали механизмы работы с СУБД MS SQL Server. Были изменены правила сопоставления внутренних типов данных (в первую очередь полей составного типа и дат) с типами полей SQL-сервера. Это привело к ужесточению требований к окружению СУБД и структуре таблиц.

К основным причинам сбоя относятся:

  1. Отсутствие актуального драйвера доступа к СУБД: Если на сервере «1С:Предприятия» не установлен SQL Server Native Client (версии 11.0 или новее) либо используется стандартный устаревший OLE DB провайдер, запросы кластера 1С к системным таблицам базы приводят к ошибке несовместимости типов данных.
  2. Некорректно созданная база данных в MS SQL: Простое создание пустой базы в SQL Server Management Studio (SSMS) без участия платформы 1С не формирует служебные таблицы и метаданные. При попытке кластера подключиться к такой «сырой» базе происходит сбой транзакции инициализации.
  3. Несоответствие разрядности установленных компонентов: Если служба сервера 1С работает в 64-битном режиме (x64), а на сервере установлен только 32-битный (x86) драйвер Native Client, соединение с СУБД работает некорректно.
  4. Несовместимость структур при переходе с 8.2 на 8.3: Прямое подключение базы, созданной и работавшей на сервере платформы 8.2, к кластеру 8.3 без конвертации и реструктуризации таблиц.
  5. Конфликт параметров смещения дат: Несовпадение параметра «Смещение дат» (значения 0 или 2000), установленного в кластере 1С, с фактическими типами колонок в таблицах SQL.

Способ 1. Установка и обновление Microsoft SQL Server Native Client

Выясним причину на уровне драйверов: платформа 1С версий 8.3.8 и выше требует наличия компонента SQL Server Native Client для корректной передачи типизированных запросов авторизации.

  1. Скачаем дистрибутив Microsoft SQL Server Native Client (версии 2012 / 11.0 или выше) с официального сайта Microsoft или из дистрибутива SQL Server Feature Pack.
  2. Установим пакет драйвера на сервер, где запущена служба кластера «1С:Предприятия». Важно: разрядность драйвера (x64 или x86) должна строго соответствовать разрядности установленного сервера 1С. Для 64-битного сервера 1С необходим 64-битный Native Client.
  3. После завершения установки откроем оснастку «Службы» (services.msc) и выполним перезапуск службы Агент сервера 1С:Предприятия 8.3.
  4. Проверим повторное подключение к информационной базе.

Способ 2. Корректное создание и развертывание информационной базы

Рассмотрим по шагам правильный алгоритм переноса и создания базы данных на сервере 1С, исключающий структурные ошибки метаданных:

  1. В исходной базе (в файловом режиме или на сервере 8.2) запустим Конфигуратор.
  2. Перейдем в главное меню: Администрирование — Выгрузить информационную базу... и сохраним файл с расширением .dt.
  3. Откроем консоль администрирования серверов 1С:Предприятия 8.3 или окно запуска 1С.
  4. Создадим новую информационную базу на сервере. При создании обязательно установим флаг «Создать базу данных в случае ее отсутствия», укажем имя базы, параметры учетной записи SQL с полными правами (db_owner) и выберем смещение дат 2000.
  5. Запустим созданную пустую информационную базу в режиме Конфигуратор. Платформа самостоятельно создаст необходимую структуру таблиц в MS SQL.
  6. В Конфигураторе выберем Администрирование — Загрузить информационную базу... и укажем ранее выгруженный .dt-файл.
  7. После завершения загрузки перезапустим сеанс в режиме «1С:Предприятие».

Способ 3. Проверка прав пользователя СУБД и тестирование базы

Если база данных уже существовала в СУБД и к ней подключается новый кластер 1С, проанализируем настройки безопасности и выполним проверку целостности:

  1. В SQL Server Management Studio убедимся, что учетная запись, под которой сервер 1С подключается к СУБД, имеет роль db_owner для рабочей базы данных, а также права на создание временных таблиц в системной базе tempdb.
  2. Убедимся, что параметры сортировки (Collation) базы данных соответствуют стандарту: Cyrillic_General_CI_AS.
  3. Зайдем в информационную базу в режиме Конфигуратор, перейдем в меню Администрирование — Тестирование и исправление....
  4. Установим флаги «Реструктуризация таблиц информационной базы» и «Проверка логической целостности», после чего запустим процесс для переиндексации и приведения типов данных к актуальному стандарту платформы 8.3.

Выполнение указанных шагов позволяет устранить конфликт преобразования типов данных при выполнении запросов авторизации и восстановить штатную работу информационных баз на сервере «1С:Предприятия».

← На главную