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