TransactionScope не будет работать с поставщиком DB2 - PullRequest
3 голосов
/ 10 сентября 2009

Я пытался использовать TransactionScope с базой данных DB2 (с использованием поставщика DB2 .Net v 9.0.0.2 и c # 2.0), который ДОЛЖЕН быть поддерживается в соответствии с IBM.

Я испробовал все советы, которые смог найти на форумах IBM (например, здесь ), но безрезультатно.

Я включил транзакции XA на моей машине с XP Sp2, пробовал также с машины с Win 2003 Server, но я постоянно получаю печально известную ошибку:

ERROR [58005] [IBM][DB2/NT] SQL0998N  Error occurred during

транзакция или эвристическая обработка. Код причины = "16". Субкод = "2-80004005". SQLSTATE = 58005

В журнале событий Windows написано:

The XA Transaction Manager attempted to load the XA resource

менеджер DLL. Звонок в LOADLIBRARY для библиотеки диспетчера ресурсов XA не удалось: DLL = C: \ APPS \ IBM \ DB2v95fp2 \ SQLLIB \ BIN \ db2app.dll Файл = D: \ comxp_sp2 \ ком \ com1x \ DTC \ DTC \ XATM \ SRC \ xarmconn.cpp Линия = 2467.

Также, пользователю NETWORK SERVICE предоставлены полные права на папку и dll.

Вот сообщение о запуске MSDTC

MS DTC начался со следующего Настройки:

Конфигурация безопасности (OFF = 0 и ON = 1): Сетевое администрирование транзакций = 0, Сетевые клиенты = 0, Входящие распределенные транзакции с использованием собственного протокола MSDTC = 0, Распределенные исходящие транзакции с использованием собственного MSDTC Протокол = 0, Транзакционный интернет-протокол (TIP) = 0, Транзакции XA = 1

Любая помощь будет принята с благодарностью!

Спасибо, Флорин

Ответы [ 2 ]

5 голосов
/ 26 марта 2010

Мне удалось заставить скрипучий старый драйвер IBM DB2 v7 ODBC работать в TransactionScope. Требуется:

  • XA-транзакции включены в свойствах MSDTC
  • Значение, введенное в разделе реестра HKLM \ SOFTWARE \ Microsoft \ MSDTC \ XADLL с именем 'DB2CLI.DLL' и значением 'C: \ PROGRA ~ 1 \ IBM \ SQLLIB \ BIN \ DB2CLI.DLL' (путь к dll в формате 8.3 - v9 использует DB2APP.DLL)
  • перезагрузка
  • Не закрывать соединение до удаления TransactionScope. Это кажется очевидным в ретроспективе. :)

Я не уверен, относится ли это к вашему конкретному сценарию. В документации IBM код причины 16, субкод 2 обозначен как «MSDTC не может зарегистрировать соединение DB2». Кажется, есть какая-то проблема с MSDTC при поиске dll DB2 - возможно, проверьте раздел реестра, указанный выше?

2 голосов
/ 22 декабря 2012

Я решил эту проблему, активировав MS DTC, как показано на рисунке ниже:

  1. запуск dcomcnfg ;
  2. Службы компонентов> Компьютеры> Мой компьютер> Координатор распределенных транзакций
  3. Выберите Локальный код неисправности> Свойства> Вкладка «Безопасность»:

MS DTC Configuration for DB2 and Informix

Перезагрузите компьютер и попробуйте снова. Убедитесь, что у вас установлены последние версии драйверов IBM. Я тестировал с 10.1 Fix Pack 1 и Informix 11.50.

Источник: http://blogs.msdn.com/b/bill/archive/2006/12/12/using-msdtc-between-vista-clients-and-windows-2000-servers.aspx

...