La guía paso a paso o código que verás en este artículo es la solución más fácil y válida que hallamos a esta inquietud o dilema.
Solución:
Establecer el indicador “Habilitar promoción de transacciones distribuidas” en false (en la ventana de propiedades del servidor vinculado) resolvió mi problema similar.
Enfrenté un problema similar y lo resolví de la siguiente manera. Hay un nodo en la estructura de árbol del explorador de objetos en SQL Server. Allí encontrará Serverobjects → LinkedServers → debajo de que hay una lista de direcciones IP de servidores distribuidos.
Haga clic derecho sobre él, seleccione propiedades, aparecerá una ventana. Seleccione las opciones del servidor en el panel izquierdo; obtendrá una lista de propiedades. Establecer el valor de la bandera false a la propiedad “Habilitar promoción de transacción distribuida”.
Si después de configurar su Coordinador de transacciones distribuidas de MS (MSDTC) en los dos servidores SQL de acuerdo con la publicación original del OP, todavía obtiene “ninguna transacción activa”, debe verificar que se pueda acceder a cada host a través de la IP (suponiendo que eso es lo que tiene utilizados) registrados en el servidor enlazado.
Por ejemplo; en una configuración reciente, se podía acceder a dos servidores SQL a través de una red en el rango 192.168.200.x (misma subred), pero cada servidor también estaba conectado indirectamente a través de una IP en el rango 10.xxx. En un servidor SQL, el servidor DNS que usó siguió resolviendo el servidor SQL de destino en su IP 10.xxx (que estaba protegido por un firewall) a pesar de que la entrada del servidor vinculado usaba la IP en 192.168.200.x del servidor de destino.
Parece que MSDTC usa el nombre de host del servidor, mientras que el servidor SQL se conecta a través de cualquier conexión vinculada usando la IP o el nombre de host definido en la entrada del servidor vinculado, lo que genera este comportamiento confuso de conectividad aparente al verificar el servidor vinculado de destino dentro de SQL Management Studio. pero incapacidad para ejecutar procedimientos remotos en el objetivo.
La solución fue agregar entradas en el archivo del host (%windir%system32driversetchosts) para obligar explícitamente a cada servidor SQL a resolver el otro en la dirección IP en la red 192.168.200.x.
En el host 1 (IP 192.168.200.15):
# TARGET SERVER
192.168.200.20 targetserverhostname.and.any.domain.suffix targetserverhostname
En el host 2 (IP 192.168.200.20)
# SOURCE SERVER
192.168.200.15 sourceserverhostname.and.any.domain.suffix sourceserverhostname
No olvide asegurarse de que MSDTC se haya configurado de acuerdo con la captura de pantalla anterior del OP, lo que permite el acceso a la red y (si es necesario) Sin autenticación.
Nos puedes secundar nuestra ocupación añadiendo un comentario y dejando una puntuación te lo agradecemos.