vinculación entre servidores SQL2000

06/04/2004 - 10:56 por manuel garcía | Informe spam
Buenas tardes al grupo, tenemos un problema que no sabemos como solucionar,
os comento:

tenemos dos Servidores SQLSEVER 2000 (A y B) con la misma versión y
servicepack

En el sevidor A, creamos un servidor vinculado con B

EXEC sp_addlinkedserver @server = 'B
,@srvproduct= ''
,@provider = 'MSDASQL'
,@provstr = 'DRIVER={SQL Server};SERVER=IP,PUERTO;'
GO
sp_addlinkedsrvlogin @rmtsrvname = 'B'
, @useself = 'False'
, @rmtuser = 'usuario'
, @rmtpassword = 'password'
GO
EXEC sp_serveroption 'B', 'rpc', 'true'
GO
EXEC sp_serveroption 'B', 'rpc out', 'true'
GO

1.- si ejecutamos un procedimiento almacenado de B desde A
execute B.DATABASE.usuario.p_prueba


funciona OK





2.- si insertamos la salida del procedimiento en una tabla
insert into TABLA_DE_A execute B.DATABASE.usuario.p_prueba


reporta el error





Servidor: mensaje 7391, nivel 16, estado 1, línea 1
No se puede realizar la operación. El proveedor OLE DB 'MSDASQL' no pudo
iniciar una transacción distribuida.
Otra sesión confirmó o anuló la transacción que estaba activa en esta
sesión.
[OLE/DB provider returned message: [Microsoft][ODBC SQL Server Driver]Error
en transacción distribuida]
Traza de error de OLE DB [OLE/DB Provider 'MSDASQL'
ITransactionJoin::JoinTransaction returned 0x8004d00a].

3.- si iniciamos una transacción antes de ejecutar el paso 1
begin distributed transaction
execute B.DATABASE.usuario.p_prueba
ó
begin transaction
execute B.DATABASE.usuario.p_prueba



reporta el error





Servidor: mensaje 7391, nivel 16, estado 1, línea 1
No se puede realizar la operación. El proveedor OLE DB 'MSDASQL' no pudo
iniciar una transacción distribuida.
Otra sesión confirmó o anuló la transacción que estaba activa en esta
sesión.
[OLE/DB provider returned message: [Microsoft][ODBC SQL Server Driver]Error
en transacción distribuida]
Traza de error de OLE DB [OLE/DB Provider 'MSDASQL'
ITransactionJoin::JoinTransaction returned 0x8004d00a].



Alguin sabe porqué puede suceder esto, todo lo demás funciona perfectamente.
 

Leer las respuestas

#1 Miguel Egea
06/04/2004 - 15:11 | Informe spam
Asegurate de que el servicio MS-DTC está levantado en ambos servers y de que
no tienes un firewall cortandote el puerto. (No recuerdo de memoria le que
es que puedo mirarlo)


Saludos

Miguel Egea
Microsoft SQL-SERVER MVP
Brigada Anti-Cursores
http://www.portalsql.com

(Quita el online si me tienes que mandar un correo)
"manuel garcía" escribió en el mensaje
news:
Buenas tardes al grupo, tenemos un problema que no sabemos como


solucionar,
os comento:

tenemos dos Servidores SQLSEVER 2000 (A y B) con la misma versión y
servicepack

En el sevidor A, creamos un servidor vinculado con B

EXEC sp_addlinkedserver @server = 'B
,@srvproduct= ''
,@provider = 'MSDASQL'
,@provstr = 'DRIVER={SQL


Server};SERVER=IP,PUERTO;'
GO
sp_addlinkedsrvlogin @rmtsrvname = 'B'
, @useself = 'False'
, @rmtuser = 'usuario'
, @rmtpassword = 'password'
GO
EXEC sp_serveroption 'B', 'rpc', 'true'
GO
EXEC sp_serveroption 'B', 'rpc out', 'true'
GO

1.- si ejecutamos un procedimiento almacenado de B desde A
execute B.DATABASE.usuario.p_prueba
>> funciona OK

2.- si insertamos la salida del procedimiento en una tabla
insert into TABLA_DE_A execute B.DATABASE.usuario.p_prueba
>> reporta el error

Servidor: mensaje 7391, nivel 16, estado 1, línea 1
No se puede realizar la operación. El proveedor OLE DB 'MSDASQL' no pudo
iniciar una transacción distribuida.
Otra sesión confirmó o anuló la transacción que estaba activa en esta
sesión.
[OLE/DB provider returned message: [Microsoft][ODBC SQL Server


Driver]Error
en transacción distribuida]
Traza de error de OLE DB [OLE/DB Provider 'MSDASQL'
ITransactionJoin::JoinTransaction returned 0x8004d00a].

3.- si iniciamos una transacción antes de ejecutar el paso 1
begin distributed transaction
execute B.DATABASE.usuario.p_prueba
ó
begin transaction
execute B.DATABASE.usuario.p_prueba

>> reporta el error

Servidor: mensaje 7391, nivel 16, estado 1, línea 1
No se puede realizar la operación. El proveedor OLE DB 'MSDASQL' no pudo
iniciar una transacción distribuida.
Otra sesión confirmó o anuló la transacción que estaba activa en esta
sesión.
[OLE/DB provider returned message: [Microsoft][ODBC SQL Server


Driver]Error
en transacción distribuida]
Traza de error de OLE DB [OLE/DB Provider 'MSDASQL'
ITransactionJoin::JoinTransaction returned 0x8004d00a].



Alguin sabe porqué puede suceder esto, todo lo demás funciona


perfectamente.





Preguntas similares