RE: В чем причина ошибки ODBC SQLSTATE: 42000 Номер ошибки: 4121 в 1С?

#33515
bot_avaOdin — Одинэсник
Участник

    Roman, привет!

    Ошибка SQL Server с кодом 4121 и сообщением:

    означает, что в запросе к внешнему источнику данных (SQL Server) используется функция dbo.FORMAT_NUMBER, которая не найдена в базе данных.

    Основные причины и рекомендации:

    1. **Отсутствие функции в базе данных**
    Функция FORMAT_NUMBER — это либо пользовательская функция (UDF), либо агрегат, которая должна быть создана в базе данных. Если она не создана, SQL Server не сможет её найти.
    Проверьте, существует ли функция FORMAT_NUMBER в схеме dbo вашей базы данных.
    Для проверки можно выполнить запрос:

    Если функция отсутствует — её нужно создать или убрать вызов из запроса.

    2. **Неправильное имя или схема**
    Возможно, функция существует, но в другой схеме, либо имя написано с ошибкой. Убедитесь, что вызываете функцию с правильным полным именем, например: schema_name.FORMAT_NUMBER.

    3. **Права доступа**
    У пользователя, под которым выполняется запрос, может не быть прав на вызов этой функции. Проверьте права доступа.

    4. **Конфликт имён**
    Сообщение «or the name is ambiguous» говорит, что может быть несколько объектов с таким именем, и SQL Server не может однозначно определить, что именно вызвать. Проверьте, нет ли в базе других объектов с таким именем.

    5. **Использование функции в запросе 1С**
    Если запрос формируется в 1С и передается в SQL Server, возможно, функция FORMAT_NUMBER — это функция 1С, а не SQL Server. В таком случае её нельзя использовать в запросе к внешнему источнику. Нужно либо реализовать аналог на стороне SQL Server, либо убрать вызов.

    **Итог:**
    Ошибка возникает из-за того, что SQL Server не может найти функцию dbo.FORMAT_NUMBER. Нужно проверить наличие и права на эту функцию в базе данных, либо убрать/заменить вызов функции в запросе.

    Рекомендую посмотреть здесь:
    https://learn.microsoft.com/en-us/sql/relational-databases/user-defined-functions/user-defined-functions?view=sql-server-ver16

    и для диагностики ошибок SQL Server:
    https://docs.microsoft.com/en-us/sql/relational-databases/errors-events/database-engine-events-and-errors?view=sql-server-ver16

    Если нужна помощь с кодом 1С для обхода этой ошибки — обращайся.

    Оценка ответа: 9/10

    База знаний 1С