by Misael Monterroca
8. February 2008 17:55
Escenario:
Servidor 1:
- Windows Server 2000 SP4
- Sql Server 2000 SP4
Servidor 2
- Windows Server 2003 SP2
- BizTalk Server 2006
- SQL Server 2005 SP2
Servidor 2 tiene una orquestación en Biztalk la cual necesita persistir información en una base de datos localizada en el servidor 1, cuando biztalk intenta crear la transcacción dentro de SQL Server 2000 da el siguiente error: "New transaction cannot enlist in the specified transaction coordinator."
Utilizando la herramienta DTCTester se obtiene el siguiente resultado:
1: Executed: dtctester
2: DSN: test
3: User Name: sa
4: Password: sa
5: tablename= #dtc8346
6: Creating Temp Table for Testing: #dtc8346
7: Warning: No Columns in Result Set From Executing: 'create table #dtc8346 (ival int)'
8: Initializing DTC
9: Beginning DTC Transaction
10: Enlisting Connection in Transaction
11: Error:
12: SQLSTATE=25S12,Native error=-2147168219,msg='[Microsoft][ODBC SQL Server Driver]Distributed transaction error'
13: Error:
14: SQLSTATE=24000,Native error=0,msg=[Microsoft][ODBC SQL Server Driver]Invalid cursor state
15: Typical Errors in DTC Output When
16: a. Firewall Has Ports Closed
17: -OR-
18: b. Bad WINS/DNS entries
19: -OR-
20: c. Misconfigured network
21: -OR-
22: d. Misconfigured SQL Server machine that has multiple netcards.
23: Aborting DTC Transaction
24: Releasing DTC Interface Pointers
25: Successfully Released pTransaction Pointer.
Posibles soluciones:
- Firewall Has Ports Closed, No existe ningún software que se encuentre bloqueando ningún puerto
- Bad WINS/DNS entries, EL dns se encuentra correctamente configurado, utilizando DTCPING el servidor responde correctamente
- Misconfigured network, Descartado, misma solución que el punto anterior
- Misconfigured SQL Server machine that has multiple netcards, Ambos servidores tienen dos tarjetas de red, se dejo habilitada 1 y el problema persistia.
Solución
- En servidor 1, localizar la entrada del registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\Security (si no existe, crearla)
- Crear una entrada del tipo DWORD con el nombre NetworkDtcAccessTip con el valor 1, (Cero deshabilita el acceso vía TIP) Mas información
- En el servidor 2, habilitar entrar a Component Services -> Computers -> My Computer -> Boton Derecho Properties Ir a MSDTC Tab - > Habilitar Enable Transaction Internet Protocol (TIP) Transactions
- En ambos servidores reiniciar MSDTC net stop msdtc , net start msdtc
- Probar nuevamente :D
Si obtienen un resultado similar a la siguiente imagen, es que todo está funcionando perfectamente

43ab595a-f796-4390-9b51-74c0fcd4dc6e|0|.0
Tags: