Estoy tratando de ejecutar SQL en un servidor vinculado, pero recibo los siguientes errores:
BEGIN DISTRIBUTED TRANSACTION
SELECT TOP 1 * FROM Sessions
OLE DB provider "SQLNCLI" for linked server "ASILIVE" returned message "No transaction is active.".
Msg 7391, Level 16, State 2, Line 3
The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "ASILIVE" was unable to begin a distributed transaction.
Hay dos errores devueltos por el proveedor:
Error # 1:
Number: $80040E14
Source: Microsoft OLE DB Provider for SQL Server
Description: OLE DB provider "SQLNCLI" for linked server "ASILIVE" returned message "No transaction is active.".
HelpFile:
HelpContext: $00000000
SQLState: 01000
NativeError: 7412
Error # 2
Number: $80040E14
Source: Microsoft OLE DB Provider for SQL Server
Description: The operation could not be performed because OLE DB provider "SQLNCLI" for linked server "ASILIVE" was unable to begin a distributed transaction.
HelpFile:
HelpContext: $00000000
SQLState: 42000
NativeError: 7391
¿Cómo consigo que Microsoft favorezca la funcionalidad sobre la seguridad?
O, al menos, ¿cómo puedo hacer que dos servidores SQL se comuniquen entre sí?
Preguntas relacionadas
- La operación no se pudo realizar porque el proveedor OLE DB "SQLNCLI10" ... (* el nombre del servidor vinculado es
(null)
) - ¿Error de transacción distribuida? ( utilizando el proveedor de Oracle )
- No se puede enlistar en una transacción distribuida con NHibernate ( usando Hibernate )
- Error al usar transacciones distribuidas en SQL Server 2008 R2 ( SQL Server 2008 R2, sin respuesta )
- Error de transacción distribuida solo a través del código ( causado por la agrupación de conexiones )
- Error al realizar el coordinador de transacciones distribuidas en el servidor vinculado ( SQL Server 2008, sin respuesta )
- ¿Error de transacción distribuida? ( no hay respuesta aceptada; la única respuesta no ayuda )
- ¿Cómo insertar en una tabla remota usando un servidor vinculado dentro de la transacción? (la respuesta aceptada no se resuelve )
Lo que he hecho es irrelevante, pero lo publicaré de todos modos.
Asegúrese de que el
Distributed Transaction Coordinator
servicio se esté ejecutando en ambas máquinas:Deshabilite toda la seguridad de MSDTC en ambas máquinas:
Active las opciones aleatorias en el servidor vinculado:
Maldito y jurado.
Cosas destrozadas.
Comprobado que
SELECT
puede utilizar el servidor vinculado :SELECT * FROM ASILive.CustomerManagementSystem.dbo.Users .... (763 row(s) affected)
Comprobado que el servidor cliente puede
ping
el servidor remoto :C:\Documents and Settings\avatar>ping asicmstest.contoso.com Pinging asicmstest.contoso.com [10.0.0.40] with 32 bytes of data: Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Reply from 10.0.0.40: bytes=32 time<1ms TTL=128 Ping statistics for 10.0.0.40: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
Comprobado que el servidor remoto puede comunicarse de nuevo, por nombre, al servidor de inicio:
C:\Documents and Settings\avatar>ping asitestserver.contoso.com Pinging asitestserver.contoso.com [10.0.0.22] with 32 bytes of data: Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Reply from 10.0.0.22: bytes=32 time<1ms TTL=128 Ping statistics for 10.0.0.22: Packets: Sent = 4, Received = 4, Lost = 0 (0% loss), Approximate round trip times in milli-seconds: Minimum = 0ms, Maximum = 0ms, Average = 0ms
Comprobado que
@@SERVERNAME
coincide con el nombre del servidor en ambos servidores :SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ------------- ------------- ASITESTSERVER ASITESTSERVER
y
SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ---------- ---------- ASIGROBTEST ASIGROBTEST
Gritó
Emitido
SET XACT_ABORT ON
antes de emitir mi consulta :SET XACT_ABORT ON GO BEGIN DISTRIBUTED TRANSACTION SELECT TOP 1 * FROM Sessions
Otorgado
Everyone
Full Control
a :HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer
en ambos servidores.