Problema con un stored procedure

30/12/2005 - 15:15 por amejiae | Informe spam
Hola tengo el siguiente procedimiento almacenado:
Pero produce un error que dice:
"MSDTC no está disponible en el servidor 'PLATP01001'. [SQLSTATE 42000]
(Error 8501). Error en el paso." La documentacion del error dice que el
servicio MSDTC no esta disponible y que lo debo reiniciar pero ya lo hice.
Si alguien me puede ayudar estar muy agradecido
feliz 2006
/**************************************************************/
/********* Actualizacion de productos y precios ********/
/**************************************************************/

CREATE Procedure spReplicarProductoPrecios
as
begin transaction
Update tblProductoServicio Set
[intCodigoCorporativo] = R.[intCodigoCorporativo],
[strDescripcionProducto] = R.[strDescripcionProducto],
[strObservacionesProducto] = R.[strObservacionesProducto],
[decCostoUnitario] = R.[decCostoUnitario],
[decPrecioUnitario] = R.[decPrecioUnitario],
[tinfkCodigoIva] = R.[tinfkCodigoIva],
[tinDescuento] = R.[tinDescuento],
[tinfkCodigoEstado] = R.[tinfkCodigoEstado],
[tinfkMotivoEstado] = R.[tinfkMotivoEstado],
[bitIngresarPrecio] = R.[bitIngresarPrecio],
[bitPedirAutorizacionPrecio] = R.[bitPedirAutorizacionPrecio],
[intCantidadMaximaVender] = R.[intCantidadMaximaVender],
[bitControlAcceso] = R.[bitControlAcceso],
[strInicialesProducto] = R.[strInicialesProducto],
[intfkCodigoUnidadMedida] = R.[intfkCodigoUnidadMedida],
[tinfkTipoProducto] = R.[tinfkTipoProducto],
[tinfkCodigoTipoControlAcceso] = R.[tinfkCodigoTipoControlAcceso],
[tinTipoServicio] = R.[tinTipoServicio],
[intCantidadTiquetesDiasSemana] = R.[intCantidadTiquetesDiasSemana],
[bitPorMeses] = R.[bitPorMeses],
[intVigenciaDiasMeses] = R.[intVigenciaDiasMeses],
[bitInicioAlIngresar] = R.[bitInicioAlIngresar],
[tinMenoresDe] = R.[tinMenoresDe],
[intCantidadTiquetesProducto] = R.[intCantidadTiquetesProducto],
[bitPedirCrefiServicio] = R.[bitPedirCrefiServicio],
[tinMaximoDescuento] = R.[tinMaximoDescuento],
[intfkPoblacionObjeto] = R.[intfkPoblacionObjeto],
[intfkConceptoIngreso] = R.[intfkConceptoIngreso],
[bitVentaRecaudo] = R.[bitVentaRecaudo],
[tinfkCodigoTipoServicio] = R.[tinfkCodigoTipoServicio],
[bitActivo] = R.[bitActivo],
[intCodigoAplicativo] = R.[intCodigoAplicativo],
[strDescripcionCorta] = R.[strDescripcionCorta],
[bitPedirFactura] = R.[bitPedirFactura],
[smaNumeroBoletas] = R.[smaNumeroBoletas],
[bitComprobanteDiario] = R.[bitComprobanteDiario],
[bitRecaudoUnico] = R.[bitRecaudoUnico],
[bitPedirVerificacion] = R.[bitPedirVerificacion]
From dbo.tblProductoServicio L inner join
Unidad.dbPosSede.dbo.tblProductoServicio R
On(L.strpkCodigoProducto = R.strpkCodigoProducto)
IF (@@ERROR <> 0) GOTO SalirConRollBack

Insert into dbo.tblProductoServicio
Select R.* From dbo.tblProductoServicio L right join
Unidad.dbPosSede.dbo.tblProductoServicio R
On(L.strpkCodigoProducto = R.strpkCodigoProducto)
Where L.strpkCodigoProducto is null
IF (@@ERROR <> 0) GOTO SalirConRollBack

Delete From dbo.tblPrecioProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack
insert into dbo.tblPrecioProducto
Select * From Unidad.dbPosSede.dbo.tblPrecioProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack


Delete From dbo.tblDescuentoProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack

insert into dbo.tblDescuentoProducto
Select * From Unidad.dbPosSede.dbo.tblDescuentoProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack

Delete From dbo.tblProductoCrefi
IF (@@ERROR <> 0) GOTO SalirConRollBack
Insert Into dbo.tblProductoCrefi
Select L.*
From Unidad.dbposSede.dbo.tblProductoCrefi L

IF (@@ERROR <> 0) GOTO SalirConRollBack

commit transaction
GOTO Fin
SalirConRollBack:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
Fin:
GO

Preguntas similare

Leer las respuestas

#1 Isaias
30/12/2005 - 19:00 | Informe spam
Hola

Creo que el problema esta en que estas haciendo TRANSACCIONES con diferentes
servidores-bases de datos.

Lee en tu bol sobre "Transacciones distribuidas"

Saludos
IIslas


"amejiae" escribió:

Hola tengo el siguiente procedimiento almacenado:
Pero produce un error que dice:
"MSDTC no está disponible en el servidor 'PLATP01001'. [SQLSTATE 42000]
(Error 8501). Error en el paso." La documentacion del error dice que el
servicio MSDTC no esta disponible y que lo debo reiniciar pero ya lo hice.
Si alguien me puede ayudar estar muy agradecido
feliz 2006
/**************************************************************/
/********* Actualizacion de productos y precios ********/
/**************************************************************/

CREATE Procedure spReplicarProductoPrecios
as
begin transaction
Update tblProductoServicio Set
[intCodigoCorporativo] = R.[intCodigoCorporativo],
[strDescripcionProducto] = R.[strDescripcionProducto],
[strObservacionesProducto] = R.[strObservacionesProducto],
[decCostoUnitario] = R.[decCostoUnitario],
[decPrecioUnitario] = R.[decPrecioUnitario],
[tinfkCodigoIva] = R.[tinfkCodigoIva],
[tinDescuento] = R.[tinDescuento],
[tinfkCodigoEstado] = R.[tinfkCodigoEstado],
[tinfkMotivoEstado] = R.[tinfkMotivoEstado],
[bitIngresarPrecio] = R.[bitIngresarPrecio],
[bitPedirAutorizacionPrecio] = R.[bitPedirAutorizacionPrecio],
[intCantidadMaximaVender] = R.[intCantidadMaximaVender],
[bitControlAcceso] = R.[bitControlAcceso],
[strInicialesProducto] = R.[strInicialesProducto],
[intfkCodigoUnidadMedida] = R.[intfkCodigoUnidadMedida],
[tinfkTipoProducto] = R.[tinfkTipoProducto],
[tinfkCodigoTipoControlAcceso] = R.[tinfkCodigoTipoControlAcceso],
[tinTipoServicio] = R.[tinTipoServicio],
[intCantidadTiquetesDiasSemana] = R.[intCantidadTiquetesDiasSemana],
[bitPorMeses] = R.[bitPorMeses],
[intVigenciaDiasMeses] = R.[intVigenciaDiasMeses],
[bitInicioAlIngresar] = R.[bitInicioAlIngresar],
[tinMenoresDe] = R.[tinMenoresDe],
[intCantidadTiquetesProducto] = R.[intCantidadTiquetesProducto],
[bitPedirCrefiServicio] = R.[bitPedirCrefiServicio],
[tinMaximoDescuento] = R.[tinMaximoDescuento],
[intfkPoblacionObjeto] = R.[intfkPoblacionObjeto],
[intfkConceptoIngreso] = R.[intfkConceptoIngreso],
[bitVentaRecaudo] = R.[bitVentaRecaudo],
[tinfkCodigoTipoServicio] = R.[tinfkCodigoTipoServicio],
[bitActivo] = R.[bitActivo],
[intCodigoAplicativo] = R.[intCodigoAplicativo],
[strDescripcionCorta] = R.[strDescripcionCorta],
[bitPedirFactura] = R.[bitPedirFactura],
[smaNumeroBoletas] = R.[smaNumeroBoletas],
[bitComprobanteDiario] = R.[bitComprobanteDiario],
[bitRecaudoUnico] = R.[bitRecaudoUnico],
[bitPedirVerificacion] = R.[bitPedirVerificacion]
From dbo.tblProductoServicio L inner join
Unidad.dbPosSede.dbo.tblProductoServicio R
On(L.strpkCodigoProducto = R.strpkCodigoProducto)
IF (@@ERROR <> 0) GOTO SalirConRollBack

Insert into dbo.tblProductoServicio
Select R.* From dbo.tblProductoServicio L right join
Unidad.dbPosSede.dbo.tblProductoServicio R
On(L.strpkCodigoProducto = R.strpkCodigoProducto)
Where L.strpkCodigoProducto is null
IF (@@ERROR <> 0) GOTO SalirConRollBack

Delete From dbo.tblPrecioProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack
insert into dbo.tblPrecioProducto
Select * From Unidad.dbPosSede.dbo.tblPrecioProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack


Delete From dbo.tblDescuentoProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack

insert into dbo.tblDescuentoProducto
Select * From Unidad.dbPosSede.dbo.tblDescuentoProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack

Delete From dbo.tblProductoCrefi
IF (@@ERROR <> 0) GOTO SalirConRollBack
Insert Into dbo.tblProductoCrefi
Select L.*
From Unidad.dbposSede.dbo.tblProductoCrefi L

IF (@@ERROR <> 0) GOTO SalirConRollBack

commit transaction
GOTO Fin
SalirConRollBack:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
Fin:
GO

Respuesta Responder a este mensaje
#2 Alejandro Mesa
30/12/2005 - 20:22 | Informe spam
amejiae,

Estas creando una transaccion que incluye diferentes servidores (como ya
menciono Isaias), y en vez de usar "begin transaction" debes usar "begin
distributed transaction".


AMB

"amejiae" wrote:

Hola tengo el siguiente procedimiento almacenado:
Pero produce un error que dice:
"MSDTC no está disponible en el servidor 'PLATP01001'. [SQLSTATE 42000]
(Error 8501). Error en el paso." La documentacion del error dice que el
servicio MSDTC no esta disponible y que lo debo reiniciar pero ya lo hice.
Si alguien me puede ayudar estar muy agradecido
feliz 2006
/**************************************************************/
/********* Actualizacion de productos y precios ********/
/**************************************************************/

CREATE Procedure spReplicarProductoPrecios
as
begin transaction
Update tblProductoServicio Set
[intCodigoCorporativo] = R.[intCodigoCorporativo],
[strDescripcionProducto] = R.[strDescripcionProducto],
[strObservacionesProducto] = R.[strObservacionesProducto],
[decCostoUnitario] = R.[decCostoUnitario],
[decPrecioUnitario] = R.[decPrecioUnitario],
[tinfkCodigoIva] = R.[tinfkCodigoIva],
[tinDescuento] = R.[tinDescuento],
[tinfkCodigoEstado] = R.[tinfkCodigoEstado],
[tinfkMotivoEstado] = R.[tinfkMotivoEstado],
[bitIngresarPrecio] = R.[bitIngresarPrecio],
[bitPedirAutorizacionPrecio] = R.[bitPedirAutorizacionPrecio],
[intCantidadMaximaVender] = R.[intCantidadMaximaVender],
[bitControlAcceso] = R.[bitControlAcceso],
[strInicialesProducto] = R.[strInicialesProducto],
[intfkCodigoUnidadMedida] = R.[intfkCodigoUnidadMedida],
[tinfkTipoProducto] = R.[tinfkTipoProducto],
[tinfkCodigoTipoControlAcceso] = R.[tinfkCodigoTipoControlAcceso],
[tinTipoServicio] = R.[tinTipoServicio],
[intCantidadTiquetesDiasSemana] = R.[intCantidadTiquetesDiasSemana],
[bitPorMeses] = R.[bitPorMeses],
[intVigenciaDiasMeses] = R.[intVigenciaDiasMeses],
[bitInicioAlIngresar] = R.[bitInicioAlIngresar],
[tinMenoresDe] = R.[tinMenoresDe],
[intCantidadTiquetesProducto] = R.[intCantidadTiquetesProducto],
[bitPedirCrefiServicio] = R.[bitPedirCrefiServicio],
[tinMaximoDescuento] = R.[tinMaximoDescuento],
[intfkPoblacionObjeto] = R.[intfkPoblacionObjeto],
[intfkConceptoIngreso] = R.[intfkConceptoIngreso],
[bitVentaRecaudo] = R.[bitVentaRecaudo],
[tinfkCodigoTipoServicio] = R.[tinfkCodigoTipoServicio],
[bitActivo] = R.[bitActivo],
[intCodigoAplicativo] = R.[intCodigoAplicativo],
[strDescripcionCorta] = R.[strDescripcionCorta],
[bitPedirFactura] = R.[bitPedirFactura],
[smaNumeroBoletas] = R.[smaNumeroBoletas],
[bitComprobanteDiario] = R.[bitComprobanteDiario],
[bitRecaudoUnico] = R.[bitRecaudoUnico],
[bitPedirVerificacion] = R.[bitPedirVerificacion]
From dbo.tblProductoServicio L inner join
Unidad.dbPosSede.dbo.tblProductoServicio R
On(L.strpkCodigoProducto = R.strpkCodigoProducto)
IF (@@ERROR <> 0) GOTO SalirConRollBack

Insert into dbo.tblProductoServicio
Select R.* From dbo.tblProductoServicio L right join
Unidad.dbPosSede.dbo.tblProductoServicio R
On(L.strpkCodigoProducto = R.strpkCodigoProducto)
Where L.strpkCodigoProducto is null
IF (@@ERROR <> 0) GOTO SalirConRollBack

Delete From dbo.tblPrecioProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack
insert into dbo.tblPrecioProducto
Select * From Unidad.dbPosSede.dbo.tblPrecioProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack


Delete From dbo.tblDescuentoProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack

insert into dbo.tblDescuentoProducto
Select * From Unidad.dbPosSede.dbo.tblDescuentoProducto
IF (@@ERROR <> 0) GOTO SalirConRollBack

Delete From dbo.tblProductoCrefi
IF (@@ERROR <> 0) GOTO SalirConRollBack
Insert Into dbo.tblProductoCrefi
Select L.*
From Unidad.dbposSede.dbo.tblProductoCrefi L

IF (@@ERROR <> 0) GOTO SalirConRollBack

commit transaction
GOTO Fin
SalirConRollBack:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
Fin:
GO

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida