n1ro°
RU

Ошибки · Решение

SQL Server ошибка 4004: что означает и как исправить

Старый клиентский API не умеет принимать такой Unicode/ntext результат от SQL Server.

Редакция N1RO · Проверено

Короткий ответ

SQL Server 4004 возникает, когда Unicode-only/ntext данные отправляются слишком старому DB-Library или ODBC 3.7 и ниже. Основное решение — заменить legacy-клиент.

Что означает ошибка

Старый клиентский API не умеет принимать такой Unicode/ntext результат от SQL Server.

Возможные причины

  • Приложение использует DB-Library, ISQL или очень старую версию ODBC.
  • После обновления базы появился Unicode-only collation или ntext, который старый клиент раньше не видел.
  • Запрос возвращает проблемный столбец только в одной ветке или представлении, поэтому ошибка выглядит непостоянной.

Что проверить

  • Определите реальный драйвер и его версию на машине, где возникает 4004.
  • Найдите в result set Unicode/ntext столбец, после добавления которого появляется ошибка.
  • Проверьте тот же запрос через современный ODBC/OLE DB драйвер.

Безопасные шаги

  1. Переведите приложение на поддерживаемый Unicode-capable драйвер.
  2. Если миграция клиента временно невозможна, измените именно выдачу проблемного запроса на совместимый тип с осознанной потерей возможностей.
  3. Не меняйте collation всей базы только ради старого клиента без отдельной оценки последствий.

Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.

Когда нужен сервис

  • Если клиент нельзя обновить из-за vendor-зависимости, эскалируйте владельцу приложения с версией драйвера и точным типом/столбцом, вызвавшим 4004.

Похожие ошибки

  • /errors/sql-server-error-4001/
  • /errors/sql-server-error-4002/
  • /errors/sql-server-error-4005/

Что учитывать

Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.

Официальный источник

Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.