Problema con MSDTC (SQL)

16/08/2006 - 23:23 por Fernando Mosquera | Informe spam
Hola

Tenemos el siguiente problema:
Ambiente:
Servidor A con ISA Server y SQL Server 2000
Servidor B SQL Server 2000

En el servidor A tenemos configurada la tabla WebProxyLog con un trigger el
cual por cada insert del isa server en la misma inserta algunos campos en
otra tabla del Servidor B

El Servidor B esta linkeado en las "Link Server" del Servidor A.

Los MSDTC estan levantados en los 2 servidores pero al ejecutarce el trigger
da el siguiente error:

Server: Msg 7391, Level 16, State 1, Procedure Trg_Insert, Line 7
The operation could not be performed because the OLE DB provider 'SQLOLEDB'
was unable to begin a distributed transaction.
[OLE/DB provider returned message: New transaction cannot enlist in the
specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB'
ITransactionJoin::JoinTransaction returned 0x8004d00a].

Probamos correr el insert que esta dentro del trigger (sobre el query
analyzer) y funciono bien.
Probamos en el trigger poner el comando "SET XACT_ABORT ON" y su respectivo
"OFF" sin resultados
Probamos con otro server (Servidor C) que no tiene instalado el ISA Server y
funciona bien.

Bajamos una herramienta de microsoft para chequear el MSDTC (How To Use
DTCTester Tool) segun la
Nota:http://support.microsoft.com/defaul...-us;293799
Resultado de la prueba:
tablename= #dtc13748
Creating Temp Table for Testing: #dtc13748
Warning: No Columns in Result Set From Executing: 'create table #dtc13748
(ival int)'
Initializing DTC
Beginning DTC Transaction
Enlisting Connection in Transaction
Error:
SQLSTATE%S12,Native error=-2147168242,msg='[Microsoft][ODBC SQL Server
Driver]Distributed transaction error'
Error:
SQLSTATE$000,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.

En el Servidor C termino bien con el siguiente detalle:
tablename= #dtc17709
Creating Temp Table for Testing: #dtc17709
Warning: No Columns in Result Set From Executing: 'create table #dtc17709
(ival int)'
Initializing DTC
Beginning DTC Transaction
Enlisting Connection in Transaction
Executing SQL Statement in DTC Transaction
Inserting into Temp...insert into #dtc17709 values (1)
Warning: No Columns in Result Set From Executing: 'insert into #dtc17709
values (1) '
Verifying Insert into Temp...select * from #dtc17709 (should be 1): 1
Press enter to commit transaction.

Commiting DTC Transaction
Releasing DTC Interface Pointers
Successfully Released pTransaction Pointer.
Disconnecting from Database and Cleaning up Handles




Alguien sabe si el ISA Server Bloquea algo?
Si hay que abrir algun puerto? Cual es el puerto?
Si podriamos haber omitido algo en el server A? (dado que del C al B
funciona ok)
Alguna otra idea?

Ante todo muchas gracias!!!

Fernando Mosquera / Luis Tarzia
 

Leer las respuestas

#1 Eduardo Castro
16/08/2006 - 23:50 | Informe spam
Revisa el siguiente link

http://msdn.microsoft.com/library/d...af9ab1.asp


Protocol definition name Port number Protocol type Direction
139 (TCP) In
139
TCP
Inbound

Direct Host (TCP) Inbound
445
TCP
Inbound

Direct Host (TCP) Outbound
445
TCP
Outbound

Kerberos (UDP) In
88
UDP
Receive

Kerberos (TCP) In
88
TCP
Inbound

Kerberos-Sec (UDP) Server
88
UDP
Receive Send

LDAP (TCP) Inbound
389
TCP
Inbound

LDAP (UDP) Inbound
389
UDP
Receive Send

LDAP (UDP) Outbound
389
UDP
Send Receive

LDAP Global Catalog In
3268
TCP
Inbound

MOM Encrypted
51515
TCP
Inbound

MOM Encrypted Outbound
51515
TCP
Outbound

MSDTC (TCP) Outbound 0
5000
TCP
Outbound

MSDTC (TCP) Outbound 1
5001
TCP
Outbound

MSDTC (TCP) Outbound 2
5002
TCP
Outbound

MSDTC (TCP) Outbound 3
5003
TCP
Outbound

MSDTC (TCP) Outbound 4
5004
TCP
Outbound

MSDTC (TCP) Outbound 5
5005
TCP
Outbound

MSDTC (TCP) Outbound 6
5006
TCP
Outbound

MSDTC (TCP) Outbound 7
5007
TCP
Outbound

MSDTC (TCP) Outbound 8
5008
TCP
Outbound

MSDTC (TCP) Outbound 9
5009
TCP
Outbound

MSDTC (TCP) Outbound 10
5010
TCP
Outbound

MSDTC (TCP) Outbound 11
5011
TCP
Outbound

MSDTC (TCP) Outbound 12
5012
TCP
Outbound

MSDTC (TCP) Outbound 13
5013
TCP
Outbound

MSDTC (TCP) Outbound 14
5014
TCP
Outbound

MSDTC (TCP) Outbound 15
5015
TCP
Outbound

MSDTC (TCP) Outbound 16
5016
TCP
Outbound

MSDTC (TCP) Outbound 17
5017
TCP
Outbound

MSDTC (TCP) Outbound 18
5018
TCP
Outbound

MSDTC (TCP) Outbound 19
5019
TCP
Outbound

MSDTC (TCP) Outbound 20
5020
TCP
Outbound

MSDTC (TCP) Outbound 20
5021
TCP
Outbound

MSDTC (TCP) Outbound 22
5022
TCP
Outbound

MSDTC (TCP) Outbound 23
5023
TCP
Outbound

MSDTC (TCP) Outbound 24
5024
TCP
Outbound

MSDTC (TCP) Outbound 25
5025
TCP
Outbound

MSDTC (TCP) Outbound 26
5026
TCP
Outbound

MSDTC (TCP) Outbound 27
5027
TCP
Outbound

MSDTC (TCP) Outbound 28
5028
TCP
Outbound

MSDTC (TCP) Outbound 29
5029
TCP
Outbound

MSDTC (TCP) Outbound 30
5030
TCP
Outbound

NetBIOS Datagram Server
138
UDP
Receive Send

NetBIOS Name Server
137
UDP
Receive Send

NTDS (TCP) Inbound
1026
TCP
Inbound

NTDS (TCP) Outbound
1026
TCP
Outbound

RPC Outbound
135
TCP
Outbound



Eduardo Castro
Microsoft MVP
MCSE 2003+Security, MCDBA, MCSD .NET, CCNA

"Fernando Mosquera" wrote in message
news:
Hola

Tenemos el siguiente problema:
Ambiente:
Servidor A con ISA Server y SQL Server 2000
Servidor B SQL Server 2000

En el servidor A tenemos configurada la tabla WebProxyLog con un trigger
el
cual por cada insert del isa server en la misma inserta algunos campos en
otra tabla del Servidor B

El Servidor B esta linkeado en las "Link Server" del Servidor A.

Los MSDTC estan levantados en los 2 servidores pero al ejecutarce el
trigger
da el siguiente error:

Server: Msg 7391, Level 16, State 1, Procedure Trg_Insert, Line 7
The operation could not be performed because the OLE DB provider
'SQLOLEDB'
was unable to begin a distributed transaction.
[OLE/DB provider returned message: New transaction cannot enlist in the
specified transaction coordinator. ]
OLE DB error trace [OLE/DB Provider 'SQLOLEDB'
ITransactionJoin::JoinTransaction returned 0x8004d00a].

Probamos correr el insert que esta dentro del trigger (sobre el query
analyzer) y funciono bien.
Probamos en el trigger poner el comando "SET XACT_ABORT ON" y su
respectivo
"OFF" sin resultados
Probamos con otro server (Servidor C) que no tiene instalado el ISA Server
y
funciona bien.

Bajamos una herramienta de microsoft para chequear el MSDTC (How To Use
DTCTester Tool) segun la
Nota:http://support.microsoft.com/defaul...-us;293799
Resultado de la prueba:
tablename= #dtc13748
Creating Temp Table for Testing: #dtc13748
Warning: No Columns in Result Set From Executing: 'create table #dtc13748
(ival int)'
Initializing DTC
Beginning DTC Transaction
Enlisting Connection in Transaction
Error:
SQLSTATE%S12,Native error=-2147168242,msg='[Microsoft][ODBC SQL Server
Driver]Distributed transaction error'
Error:
SQLSTATE$000,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.

En el Servidor C termino bien con el siguiente detalle:
tablename= #dtc17709
Creating Temp Table for Testing: #dtc17709
Warning: No Columns in Result Set From Executing: 'create table #dtc17709
(ival int)'
Initializing DTC
Beginning DTC Transaction
Enlisting Connection in Transaction
Executing SQL Statement in DTC Transaction
Inserting into Temp...insert into #dtc17709 values (1)
Warning: No Columns in Result Set From Executing: 'insert into #dtc17709
values (1) '
Verifying Insert into Temp...select * from #dtc17709 (should be 1): 1
Press enter to commit transaction.

Commiting DTC Transaction
Releasing DTC Interface Pointers
Successfully Released pTransaction Pointer.
Disconnecting from Database and Cleaning up Handles




Alguien sabe si el ISA Server Bloquea algo?
Si hay que abrir algun puerto? Cual es el puerto?
Si podriamos haber omitido algo en el server A? (dado que del C al B
funciona ok)
Alguna otra idea?

Ante todo muchas gracias!!!

Fernando Mosquera / Luis Tarzia





Preguntas similares