Ошибка SQL -4903 при попытке соединения с базой данных DB2 - PullRequest
0 голосов
/ 24 июня 2019

Я получаю код ошибки SQL -4903 при попытке подключиться к базе данных DB2 с помощью кода SQC (это приложение ANSI C, поэтому мне нужно использовать SQC для запросов SQL).Когда я смотрю на веб-сайт IBM, чтобы понять, что означает -4903, все, что он говорит, это «Длина параметра n имени функции недопустима».Однако я понятия не имею, на какой параметр или функцию он ссылается.Я пытался просмотреть элементы объектов SQLCA, но не вижу их в Visual Studio 2015.

Это отладка приложения ANSI C в Visual Studio 2015. Я могу подключиться к той же базе данных, используякомандную строку DB2 (т. е. с помощью команды «db2 connect to dbname user username используя пароль». Однако, когда я пытаюсь сделать это в коде, я получаю ошибку -4903. Я также пробовал это делать на двух разных ОС, Windows 7 и Windows10. У меня есть коллеги, у которых не было проблем с этим на компьютере с Windows 7.

while ((retry++ < 3)
        || (sqlca.sqlcode == -30080)
        || (sqlca.sqlcode == -900  ) )
    {
        EXEC SQL CONNECT TO :DBName USER :userid USING :pword;

        if ((SQLCODE == 0 ) || (SQLCODE == (-1026)))
        {
            return(1);
        }
        else
        {
            dbLogAudit(KLCB, PLCB, KLLOGSEV(T),
                "Retry DBInit/sqlca.sqlcode : %i", sqlca.sqlcode);
        }
    }

Я ожидаю, что SQLCODE будет 0, что указывает на успешное соединение, и функция вернет 1 к немувызывающая программа. Но вместо этого переменная sqlca.sqlcode имеет значение -4903 (что я описал выше).

РЕДАКТИРОВАТЬ: я нашел параметры, передаваемые в сообщение об ошибке. Полный текст ошибки: «Длина параметра runtime_pidфункция sqlastrt_trusted недействительна ".

1 Ответ

0 голосов
/ 25 июня 2019

Я решил свою проблему. Спасибо Мао за помощь в отладке этого.

В моей среде разработки для DB2 использовалась версия 8.1.0, в которой для структуры, называемой sqla_program_id, используется 162 байта. Однако среда выполнения, которая использует 292 байта для той же структуры, была версии 10.5. Как только я обновил свой экземпляр DB2 для разработки до v10.5, он заработал как чудо.

...