Estou tentando executar o SQL em um servidor vinculado, mas recebo os erros abaixo:
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.
Existem dois erros retornados pelo provedor:
Erro # 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
Erro # 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
Como faço para que a Microsoft dê preferência à funcionalidade em vez da segurança?
Ou, pelo menos, como posso fazer com que dois SQL Severs se comuniquem?
Perguntas relacionadas
- A operação não pôde ser realizada porque o provedor OLE DB “SQLNCLI10” ... (* nome do servidor vinculado é
(null)
) - Erro de transação distribuída? ( usando o provedor Oracle )
- Incapaz de se inscrever em uma transação distribuída com NHibernate ( usando Hibernate )
- Erro ao usar transação distribuída no SQL Server 2008 R2 ( SQL Server 2008 R2, sem resposta )
- Erro de transação distribuída apenas por meio de código ( causado por pool de conexão )
- Erro ao executar o coordenador de transações distribuídas no servidor vinculado ( SQL Server 2008, sem resposta )
- Erro de transação distribuída? ( nenhuma resposta aceita; apenas a resposta não ajuda )
- Como inserir na tabela remota usando servidor vinculado com transação int? ( resposta aceita não resolve )
O que eu tenho feito é irrelevante, mas eu vou postá-lo de qualquer maneira.
Certifique-se de que o
Distributed Transaction Coordinator
serviço está sendo executado em ambas as máquinas:Desative toda a segurança MSDTC em ambas as máquinas:
Ative as opções aleatórias no servidor vinculado:
Amaldiçoado e xingado.
Coisas quebradas.
Foi verificado se um
SELECT
pode usar o servidor vinculado :SELECT * FROM ASILive.CustomerManagementSystem.dbo.Users .... (763 row(s) affected)
Verificado se o servidor cliente pode
ping
o 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
Verificado se o servidor remoto pode se comunicar de volta, por nome, ao servidor inicial:
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
Verificado que
@@SERVERNAME
corresponde ao nome do servidor em ambos os servidores :SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ------------- ------------- ASITESTSERVER ASITESTSERVER
e
SELECT @@SERVERNAME, SERVERPROPERTY('MachineName') ---------- ---------- ASIGROBTEST ASIGROBTEST
Gritou
Emitido
SET XACT_ABORT ON
antes de emitir minha consulta :SET XACT_ABORT ON GO BEGIN DISTRIBUTED TRANSACTION SELECT TOP 1 * FROM Sessions
Concedido
Everyone
Full Control
a :HKEY_LOCAL_MACHINE\Software\Microsoft\MSSQLServer
em ambos os servidores.