Ошибка инициализации SQL1159 с поставщиком данных DB2.NET, код причины 2

Я пытаюсь подключиться к DB2 из приложения .NET 2.0 в моей машине разработки с Windows 7 64 бит.

Я получаю эту ошибку в открытом методе. Не удалось найти решение.

ExceptionType: InvalidOperationException ExceptionMessage: ошибка инициализации SQL1159 с поставщиком данных DB2.NET, код причины 2, токены D:.......................\bin\db2app.dll, StackTrace: в IBM.Data.DB2.DB2ConnPool.Open(соединение DB2Connection, String & szConnectionString, DB2ConnSettings & ppSettings, Object & ppConn)  в IBM.Data.DB2.DB2Connection.Open()

Ответ 1

Узнал это от моего коллеги. Проблема была в том, что db2app.dll отсутствовал в каталоге bin папки приложения.

Скопировали db2app.dll и db2app64.dll из C:\Program Files\IBM\SQLLIB\BIN в папку bib приложения, и он работал нормально.

Ответ 2

См. "Ответ пользователя" внизу IBM doc для SQL1159N, в котором также перечислены различные причины, по которым вы можете получить этот код ошибки

Возникла проблема с вашей установкой DB2. Если это первый раз, когда DB2 была установлена ​​на этом компьютере, просмотрите журналы установки для любых возможных ошибок и запустите восстановление DB2 из апплета панели управления "Установка и удаление программ". Расположение по умолчанию для журналов установки - это папка Мои документы /DB 2LOG пользователя, выполнившего установку. Если это не решит проблему, обратитесь в службу поддержки IBM и укажите код причины, связанный с этим сообщением, и любые журналы установки.

Ответ 3

У меня был 32-битный клиент DB2, и я обращался к нему из веб-приложения, размещенного в IIS, с помощью пула приложений (с параметром "Включить 32-разрядное приложение" установлено значение "ложь" ). В этом случае 64-битный клиент (db2app64.dll) ожидается, а db2app.dll будет превышать ошибку.

Просто FYI.. Трудно отладить эту ошибку в Visual Studio, поскольку по умолчанию IIS express использует 32-битный пул приложений. Чтобы изменить его на 64-битный, нужно внести изменения в реестр (установите Use64BitIISExpress в 1). Для IIS Express нет inetmgr.

Ответ 4

После разговора с IBM они настоятельно рекомендуют против размещения библиотек IBM в папке bin. Мы разрешаем IBM удаленно настраивать наш сервер, и теперь все работает хорошо, и мы не должны помещать ibm *.dll в наши папки bin, иначе он не будет работать.