Link Server ayuda

05/11/2005 - 02:48 por Natacha | Informe spam
Hola

Imaginense que estamos implementando un esquema de link server un poco
complejo pero nada que hacer, no poseemos los fuentes y debemos hacer una
interfaz entre varios aplicativos...

Las sentencias se resumen en muchos procedimientos almacenados que se
ejecutan en cada uno de los 3 servidores que tenemos linkeados.

Fuera de eso, son servidores que estan en ciudades diferentes.

El esquema es mas o menos así

Servidor 1
exec sp 1 ..
exec sp 2..
exec sp 3..
exec servidor 2.bd1.dbo.sp1 --
exec servidor 2.bd1.dbo.sp2 --
exec servidor 2..bd1.dbo.sp3 --
exec servidor 3.bd1.dbo.sp1 --
exer servidor 3.bd1.dbo.sp2 --

Todo esto está disparándose desde un trigger por un evento de insert en una
tabla del servidor 1.

Resulta que si se ejecutan las sentencias con 1 solo usuario no hay
problema, ellas se ejecutan en su totalidad y con un tiempo de respuesta muy
bueno.

El problema está cuando se conectan varios usuarios a la vez.

En todo el proceso ya hemos usado las siguientes optimizaciones pero nada:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
set xact_abort on
set ANSI_NULLS on

El problema radica en que si enviamos las sentencias por aparte todo
funciona sin importar el numero de usuarios, pero en el momento en que
interviene la transaccion distribuida con concurrencia tenemos problemas de
interbloqueos o abrazos moratlaes.

Muchas gracias por la ayuda que me puedan brindar
 

Leer las respuestas

#1 Isaias
05/11/2005 - 02:49 | Informe spam
En lo personal, no me gusta ejecutar STORE PROCEDURES desde los triggers, en
tu lugar, yo ejecutaria los stores desde el store mismo que hace la
actualizacion a la tabla, de esta forma, bien puedes controlar los dead_lock
con Begin Tran, Commit Tran, Rollback Tran.
Saludos
IIslas


"Natacha" escribió:

Hola

Imaginense que estamos implementando un esquema de link server un poco
complejo pero nada que hacer, no poseemos los fuentes y debemos hacer una
interfaz entre varios aplicativos...

Las sentencias se resumen en muchos procedimientos almacenados que se
ejecutan en cada uno de los 3 servidores que tenemos linkeados.

Fuera de eso, son servidores que estan en ciudades diferentes.

El esquema es mas o menos así

Servidor 1
exec sp 1 ..
exec sp 2..
exec sp 3..
exec servidor 2.bd1.dbo.sp1 --
exec servidor 2.bd1.dbo.sp2 --
exec servidor 2..bd1.dbo.sp3 --
exec servidor 3.bd1.dbo.sp1 --
exer servidor 3.bd1.dbo.sp2 --

Todo esto está disparándose desde un trigger por un evento de insert en una
tabla del servidor 1.

Resulta que si se ejecutan las sentencias con 1 solo usuario no hay
problema, ellas se ejecutan en su totalidad y con un tiempo de respuesta muy
bueno.

El problema está cuando se conectan varios usuarios a la vez.

En todo el proceso ya hemos usado las siguientes optimizaciones pero nada:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
set xact_abort on
set ANSI_NULLS on

El problema radica en que si enviamos las sentencias por aparte todo
funciona sin importar el numero de usuarios, pero en el momento en que
interviene la transaccion distribuida con concurrencia tenemos problemas de
interbloqueos o abrazos moratlaes.

Muchas gracias por la ayuda que me puedan brindar

Preguntas similares