Fallos con triggers

23/06/2005 - 12:47 por Ivan García | Informe spam
Hola:

estoy intentando montar una sincronización (de momento estoy aún con las
pruebas, pero se me está echando el tiempo encima) entre 2 servidores con SQL
Server 2000 utilizando triggers. La idea es que las bases de datos estén
igual y se mantengan sincronizadas, no se trata de hacer un backup en una y
restaurarlo en otra, sino de que los cambios (insert, delete, update) que se
produzcan en la primera sean enviados a la segunda (de momento en máquinas
del mismo dominio; después tendré que hacer lo mismo con otras maquinas en
dominios distintos).

Pero al activar un trigger de insert me da el siguiente error:

[Microsoft][ODBC SQL Server Driver][SQL Server]
[OLE/DB provider returned message: No se pueden iniciar más transacciones en
esta sesión]

ambos servidores están en el mismo dominio,
supongamos sis05 el que lanza el trigger y sis01 (192.168.0.10) en el que
quiero insertar

he hecho

sp_addlinkedserver '192.168.0.10'

sp_addserver 'sistemasb'

sp_setnetname 'sistemasb', '192.168.0.10'

sp_serveroption 'sistemasb', 'DATA ACCESS', 'on'

MSDTC está activo en ambos servidores, el acceso a DTC desde la red también

(en el servidor sistemasb tengo una base de datos sobre la que estoy
haciendo las pruebas, se llama prueba y tengo

una tabla p5 con 3 campos numéricos)

Si desde sis05 hago un insert a pelo del estilo

insert into sistemasb.prueba.dbo.p5 (numero, numero2, numero3) values (3,4,5)

lo acepta sin problemas, pero si incluyo esta linea en el trigger me da el
fallo
¿cómo podría solucionarlo? (¿y tendría que hacer algún cambio adicional para
que me funcionara en máquinas de dominios distintos?)

Muchas gracias por adelantado

Preguntas similare

Leer las respuestas

#1 Maxi
23/06/2005 - 13:50 | Informe spam
Hola ivan, podrias revisar la variable @@transcount? me parece que tienes
muchas transacciones en danza


Salu2
Maxi


"Ivan García" <Ivan Garcí escribió en el mensaje
news:
Hola:

estoy intentando montar una sincronización (de momento estoy aún con las
pruebas, pero se me está echando el tiempo encima) entre 2 servidores con
SQL
Server 2000 utilizando triggers. La idea es que las bases de datos estén
igual y se mantengan sincronizadas, no se trata de hacer un backup en una
y
restaurarlo en otra, sino de que los cambios (insert, delete, update) que
se
produzcan en la primera sean enviados a la segunda (de momento en máquinas
del mismo dominio; después tendré que hacer lo mismo con otras maquinas en
dominios distintos).

Pero al activar un trigger de insert me da el siguiente error:

[Microsoft][ODBC SQL Server Driver][SQL Server]
[OLE/DB provider returned message: No se pueden iniciar más transacciones
en
esta sesión]

ambos servidores están en el mismo dominio,
supongamos sis05 el que lanza el trigger y sis01 (192.168.0.10) en el que
quiero insertar

he hecho

sp_addlinkedserver '192.168.0.10'

sp_addserver 'sistemasb'

sp_setnetname 'sistemasb', '192.168.0.10'

sp_serveroption 'sistemasb', 'DATA ACCESS', 'on'

MSDTC está activo en ambos servidores, el acceso a DTC desde la red
también

(en el servidor sistemasb tengo una base de datos sobre la que estoy
haciendo las pruebas, se llama prueba y tengo

una tabla p5 con 3 campos numéricos)

Si desde sis05 hago un insert a pelo del estilo

insert into sistemasb.prueba.dbo.p5 (numero, numero2, numero3) values
(3,4,5)

lo acepta sin problemas, pero si incluyo esta linea en el trigger me da el
fallo
¿cómo podría solucionarlo? (¿y tendría que hacer algún cambio adicional
para
que me funcionara en máquinas de dominios distintos?)

Muchas gracias por adelantado

Respuesta Responder a este mensaje
#2 Ivan García
24/06/2005 - 09:27 | Informe spam
Hola,
he mirado la variable (anidando el insert del trigger en un if que controla
su valor)
y falla en el caso siguiente

if @@trancount = 1
begin
insert into sistemasb.prueba.dbo.p5 (numero, numero2, numero3) values
(3,4,5)
end

vamos, que el trigger falla cuando entra al if, que es cuando la variable
vale 1

por cierto, perdón si no lo puse en el anterior mensaje, si modifico el
insert para que se ejecute sobre una tabla local (insert into p2 ... ) lo
ejecuta sin problemas, sólo falla al intentar hacerlo sobre otro servidor.
Gracias







"Maxi" escribió:

Hola ivan, podrias revisar la variable @@transcount? me parece que tienes
muchas transacciones en danza


Salu2
Maxi


"Ivan García" <Ivan Garcí escribió en el mensaje
news:
> Hola:
>
> estoy intentando montar una sincronización (de momento estoy aún con las
> pruebas, pero se me está echando el tiempo encima) entre 2 servidores con
> SQL
> Server 2000 utilizando triggers. La idea es que las bases de datos estén
> igual y se mantengan sincronizadas, no se trata de hacer un backup en una
> y
> restaurarlo en otra, sino de que los cambios (insert, delete, update) que
> se
> produzcan en la primera sean enviados a la segunda (de momento en máquinas
> del mismo dominio; después tendré que hacer lo mismo con otras maquinas en
> dominios distintos).
>
> Pero al activar un trigger de insert me da el siguiente error:
>
> [Microsoft][ODBC SQL Server Driver][SQL Server]
> [OLE/DB provider returned message: No se pueden iniciar más transacciones
> en
> esta sesión]
>
> ambos servidores están en el mismo dominio,
> supongamos sis05 el que lanza el trigger y sis01 (192.168.0.10) en el que
> quiero insertar
>
> he hecho
>
> sp_addlinkedserver '192.168.0.10'
>
> sp_addserver 'sistemasb'
>
> sp_setnetname 'sistemasb', '192.168.0.10'
>
> sp_serveroption 'sistemasb', 'DATA ACCESS', 'on'
>
> MSDTC está activo en ambos servidores, el acceso a DTC desde la red
> también
>
> (en el servidor sistemasb tengo una base de datos sobre la que estoy
> haciendo las pruebas, se llama prueba y tengo
>
> una tabla p5 con 3 campos numéricos)
>
> Si desde sis05 hago un insert a pelo del estilo
>
> insert into sistemasb.prueba.dbo.p5 (numero, numero2, numero3) values
> (3,4,5)
>
> lo acepta sin problemas, pero si incluyo esta linea en el trigger me da el
> fallo
> ¿cómo podría solucionarlo? (¿y tendría que hacer algún cambio adicional
> para
> que me funcionara en máquinas de dominios distintos?)
>
> Muchas gracias por adelantado
>



Respuesta Responder a este mensaje
#3 Maxi
24/06/2005 - 16:00 | Informe spam
Hola Ivan, entonces el problema lo tienes ahi, en la conexion con el otro
servidor. El otro servidor es sql tambien? estas usando transacciones
distribuidas?


Salu2
Maxi


"Ivan García" <Ivan Garcí escribió en el mensaje
news:
Hola,
he mirado la variable (anidando el insert del trigger en un if que
controla
su valor)
y falla en el caso siguiente

if @@trancount = 1
begin
insert into sistemasb.prueba.dbo.p5 (numero, numero2, numero3) values
(3,4,5)
end

vamos, que el trigger falla cuando entra al if, que es cuando la variable
vale 1

por cierto, perdón si no lo puse en el anterior mensaje, si modifico el
insert para que se ejecute sobre una tabla local (insert into p2 ... ) lo
ejecuta sin problemas, sólo falla al intentar hacerlo sobre otro servidor.
Gracias







"Maxi" escribió:

Hola ivan, podrias revisar la variable @@transcount? me parece que tienes
muchas transacciones en danza


Salu2
Maxi


"Ivan García" <Ivan Garcí escribió en el
mensaje
news:
> Hola:
>
> estoy intentando montar una sincronización (de momento estoy aún con
> las
> pruebas, pero se me está echando el tiempo encima) entre 2 servidores
> con
> SQL
> Server 2000 utilizando triggers. La idea es que las bases de datos
> estén
> igual y se mantengan sincronizadas, no se trata de hacer un backup en
> una
> y
> restaurarlo en otra, sino de que los cambios (insert, delete, update)
> que
> se
> produzcan en la primera sean enviados a la segunda (de momento en
> máquinas
> del mismo dominio; después tendré que hacer lo mismo con otras maquinas
> en
> dominios distintos).
>
> Pero al activar un trigger de insert me da el siguiente error:
>
> [Microsoft][ODBC SQL Server Driver][SQL Server]
> [OLE/DB provider returned message: No se pueden iniciar más
> transacciones
> en
> esta sesión]
>
> ambos servidores están en el mismo dominio,
> supongamos sis05 el que lanza el trigger y sis01 (192.168.0.10) en el
> que
> quiero insertar
>
> he hecho
>
> sp_addlinkedserver '192.168.0.10'
>
> sp_addserver 'sistemasb'
>
> sp_setnetname 'sistemasb', '192.168.0.10'
>
> sp_serveroption 'sistemasb', 'DATA ACCESS', 'on'
>
> MSDTC está activo en ambos servidores, el acceso a DTC desde la red
> también
>
> (en el servidor sistemasb tengo una base de datos sobre la que estoy
> haciendo las pruebas, se llama prueba y tengo
>
> una tabla p5 con 3 campos numéricos)
>
> Si desde sis05 hago un insert a pelo del estilo
>
> insert into sistemasb.prueba.dbo.p5 (numero, numero2, numero3) values
> (3,4,5)
>
> lo acepta sin problemas, pero si incluyo esta linea en el trigger me da
> el
> fallo
> ¿cómo podría solucionarlo? (¿y tendría que hacer algún cambio adicional
> para
> que me funcionara en máquinas de dominios distintos?)
>
> Muchas gracias por adelantado
>



Respuesta Responder a este mensaje
#4 Don Roque
24/06/2005 - 16:42 | Informe spam
Por algun motivo en especial no usaste una replicacion?
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida