Ошибки · Решение
SQL Server ошибка 4004: что означает и как исправить
Старый клиентский API не умеет принимать такой Unicode/ntext результат от SQL Server.
Короткий ответ
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 драйвер.
Безопасные шаги
- Переведите приложение на поддерживаемый Unicode-capable драйвер.
- Если миграция клиента временно невозможна, измените именно выдачу проблемного запроса на совместимый тип с осознанной потерей возможностей.
- Не меняйте collation всей базы только ради старого клиента без отдельной оценки последствий.
Только безопасные обратимые действия. Опасные шаги — только по официальной инструкции и с пониманием рисков.
Когда нужен сервис
- Если клиент нельзя обновить из-за vendor-зависимости, эскалируйте владельцу приложения с версией драйвера и точным типом/столбцом, вызвавшим 4004.
Похожие ошибки
- /errors/sql-server-error-4001/
- /errors/sql-server-error-4002/
- /errors/sql-server-error-4005/
Что учитывать
Точная причина зависит от версии ПО/прошивки, полного текста ошибки и контекста. Официальная инструкция имеет приоритет.
Официальный источник
Расшифровка сверена с официальными страницами поддержки из источников ниже. Редакция N1RO не диагностировала ваш конкретный случай.