2009-09-10 2 views
2

Я пытался использовать TransactionScope с базы данных DB2 (с использованием DB2 .Net поставщика V 9.0.0.2 и C# 2.0), которые следует поддерживать в соответствии с IBM ,TransactionScope не будет работать с поставщиком DB2

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

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

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

transaction or heuristic processing. Reason Code = "16". Subcode = "2-80004005". SQLSTATE=58005

Журнал событий Windows говорит:

The XA Transaction Manager attempted to load the XA resource 

manager DLL. The call to LOADLIBRARY for the XA resource manager DLL failed: DLL=C:\APPS\IBM\DB2v95fp2\SQLLIB\BIN\DB2APP.DLL File=d:\comxp_sp2\com\com1x\dtc\dtc\xatm\src\xarmconn.cpp Line=2467.

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

Вот загрузочное сообщение MSDTC

MS DTC started with the following settings:

Security Configuration (OFF = 0 and ON = 1): Network Administration of Transactions = 0, Network Clients = 0, Inbound Distributed Transactions using Native MSDTC Protocol = 0, Outbound Distributed Transactions using Native MSDTC Protocol = 0, Transaction Internet Protocol (TIP) = 0, XA Transactions = 1

Любая помощь будет высоко ценится!

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

ответ

4

мне удалось получить скрипучий старый драйвер 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)
  • A перезагрузка
  • Не закрывать соединение до размещения ТранзакционногоScope. Это кажется очевидным в ретроспективе. :)

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

2

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

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

MS DTC Configuration for DB2 and Informix

Reboot ваша машина и повторите попытку. Убедитесь, что у вас есть последние драйверы 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