2015-11-24 3 views
1

У меня есть сервер BizTalk и SQL-сервер, который BizTalk отправляет сообщения через WCF-SQL. Сервер BizTalk уже более года звонит на этот сервер без проблем. Я пришел этим утром, вдруг это не может (он работал в пятницу).Менеджер транзакций MSDTC не смог нажать транзакцию на диспетчер транзакций назначения из-за проблем связи

Полная ошибка я получаю при вызове WCF-SQL является конечной точкой:

A message sent to adapter "WCF-SQL" on send port "MyPort" with URI "mssql://mySQLServer" is suspended. 
Error details: System.Transactions.TransactionManagerCommunicationException: Communication with the underlying transaction manager has failed. ---> System.Runtime.InteropServices.COMException: 
The MSDTC transaction manager was unable to push the transaction to the destination transaction manager due to communication problems. 
Possible causes are: a firewall is present and it doesn't have an exception for the MSDTC process, the two machines cannot find each other by their NetBIOS names, or the support for network transactions is not enabled for one of the two transaction managers. (Exception from HRESULT: 0x8004D02A) 
at System.Transactions.Oletx.ITransactionShim.Export(UInt32 whereaboutsSize, Byte[] whereabouts, Int32& cookieIndex, UInt32& cookieSize, CoTaskMemHandle& cookieBuffer) 
at System.Transactions.TransactionInterop.GetExportCookie(Transaction transaction, Byte[] whereabouts) 

Я следовал инструкциям из следующей теме: MSDTC on server 'server is unavailable

Я запустить msdtc -uninstall затем msdtc -install и перезапустил службу несколько раз.

Я перезагрузил сервер несколько раз.

Я могу подключиться к базе данных с помощью среды SQL Server Management Studio,

DTCPing при попытке подключиться с сервера SQL к результатам BizTalk Server в (когда DTCPing работает на BizTalk):

Problem:fail to invoke remote RPC method 
Error(0x6BA) at dtcping.cpp @303 
-->RPC pinging exception 
-->1722(The RPC server is unavailable.) 
RPC test failed 

при переходе от Biztalk к SQL я получаю это (даже мысль DTCPing работает на другом конце)

Please refer to following log file for details: 
C:\Temp\DTCPing\myserv.log 
Invoking RPC method on dbaditest 
RPC test is successful 
++++++++++++RPC test completed+++++++++++++++ 
Please start PING from dbaditest to complete the test 

ни сервер работает брандмауэром вообще

Я все не в том, чтобы попробовать.

Редактировать: Я могу подтвердить, что другие серверы/компьютеры могут подключаться к SQL-серверу. Поэтому я должен предположить, что это проблема BizTalk-сервера.

Редактировать 2: Я попытался подключиться из BizTalk Server к другому SQL-серверу в сети и получил ту же ошибку. Я моменты от бросать свои руки и восстановление моего Dev среда - UGG :(

Edit 3: я телнет к порту 135 из BizTalk к SQL Server, так что нет ничего блокировать его

.

Edit 4: результаты DTCTester в:

tablename= #dtc24449 
Creating Temp Table for Testing: #dtc24449 
Warning: No Columns in Result Set From Executing: 'create table #dtc24449 (ival int)' 
Initializing DTC 
Beginning DTC Transaction 
Enlisting Connection in Transaction 
Error: 
SQLSTATE=25S12,Native error=-2147168242,msg='[Microsoft][ODBC SQL Server Driver]Distributed transaction error' 
Error: 
SQLSTATE=24000,Native error=0,msg=[Microsoft][ODBC SQL Server Driver]Invalid cursor state 
Typical Errors in DTC Output When 
a. Firewall Has Ports Closed 
-OR- 
b. Bad WINS/DNS entries 
-OR- 
c. Misconfigured network 
-OR- 
d. Misconfigured SQL Server machine that has multiple netcards. 
Aborting DTC Transaction 
Releasing DTC Interface Pointers 
Successfully Released pTransaction Pointer. 
+0

Чтобы подтвердить, что вы перезагрузили оба сервера BizTalk и SQL? – Gruff

+0

Что-то изменилось на стороне BizTalk или SQL Server, когда эта проблема началась, например, перезагрузка после исправления или что-то еще. Можете ли вы проверить конфигурацию MSDTC, как указано в ссылке https://msdn.microsoft.com/en-us/library/aa544733(v=cs.70).aspx –

+0

Я добавил редактирование. Это проблема BizTalk-сервера. Насколько я знаю, ничего не изменилось. Это среда разработки, и все было по-прежнему, когда я ее оставил (все мои окна, Visual Studio, все еще открыты). – Bensonius

ответ

0

Вау, я, наконец, понял это. Как сказал большинство людей, он ДОЛЖЕН быть какой-то сетевой проблемой (и я не соглашался). Кикером было то, что моему компьютеру был позволен DTC от него к SQL, но виртуальная машина, работающая на моем ПК, не сделала этого. В итоге оказалось, что на прошлой неделе мы были вынуждены установить Symantec Endpoint Protection (прямо перед выходом на выходные).

Я удалил его и все, что он сейчас работает.

0

Не уверен, если это поможет, но думал, что я бы упомянуть об этом.

С ОБОИХ серверов:

Начало ->администратора Инструменты ->службы компонентов

Expand службы компонентов ->Компьютеры ->Мой компьютер ->Координатор распределенных транзакций и щелкните правой кнопкой мыши Локальный код неисправности. Перейдите на страницу Безопасность и проверьте настройки там.

  • Включить сеть доступа к DTC
  • Разрешить удаленных клиентов
  • Allow Inbound/Outbound в соответствии с требованиями
  • Выберите правильную идентификацию
  • Включить XA-транзакции в соответствии с требованиями

MSDTC служба должна автоматического перезапуска , Возможно, эти настройки изменились с пятницы? У меня это было раньше по причинам, не указанным

+0

Я делал это несколько раз на каждом сервере. – Bensonius

1
  1. Является ли ваше имя компьютера BizTalk/SQL уникальным? (нет конфликтов с другими машинами)

  2. Можете ли вы подключить DTC к другому серверу SQL с вашего сервера BizTalk? Я предлагаю вам использовать DTCTester , проверяя соединение DTC вместо DTCP.

+0

Да, имена уникальны. Нет. Я не могу подключить DTC к другому серверу SQL с моего сервера BizTalk (см. Правки в исходном вопросе). – Bensonius

+0

Я добавил результаты DTCTester к исходному вопросу. – Bensonius

+0

Ошибка 1722 обычно указывает на проблему с сетевым подключением. Поэтому я не думаю, что восстановление вашей серверной среды BizTalk решит вашу проблему. Что-то, что вы можете попробовать: 1. Свяжитесь со своей сетевой командой вашего корпуса, чтобы узнать, блокируют ли они некоторые порты в сетевой инфраструктуре. 2. Используйте Wireshark для захвата всех сетевых пакетов на вашем сервере biztalk, чтобы узнать, что произошло. Удачи. – Zee

1

Вы уже сделали здесь несколько шагов, но тщательно пройдите через MSDN Article on Troubleshooting MSDTC.

Я был бы обеспокоен тем, что кто-то отобрал у вас другой сервер, но удаление и повторная установка MSDTC должны были исправить это. Возможно, стоит также проверить эти значения реестра (из приведенной выше ссылки):

Windows повышает безопасность, требуя аутентифицированных вызовов в интерфейсе RPC. Эта функциональность настраивается с помощью ключей реестра EnableAuthEpResolution и RestrictRemoteClients. Чтобы убедиться, что удаленные компьютеры имеют доступ к интерфейсу RPC, выполните следующие действия:

Нажмите кнопку Пуск, выберите пункт Выполнить, введите команду regedit.exe, а затем нажмите кнопку ОК, чтобы запустить редактор реестра.

Перейдите к HKEY_LOCAL_MACHINE \ SOFTWARE \ Policies \ Microsoft \ Windows NT

Под ключ RPC создайте следующие записи типа DWORD с указанными значениями. Если ключ RPC не существует, он должен быть создан.

DWORD entry    Default value Recommended value 
EnableAuthEpResolution 0 (disabled) 1 
RestrictRemoteClients 1 (enabled) 0 

Закройте редактор реестра.

Перезапустите службу MSDTC.

+0

Я сделал некоторые обновления Windows, тогда я сделал это и никаких изменений. Я все еще получаю ту же ошибку, что и в исходном вопросе. – Bensonius

Смежные вопросы