De um SQL Server 2014 RTM em nosso ambiente DEV, estou executando esta consulta usando um login SQL.
select t.noshipid, y.nofolder
from distantserver.distantdatabase.dbo.sometable t (nolock)
inner join somedatabase.dbo.sometable y (nolock)
on cast(t.nobill as bigint) = y.nobill
where t.type_payment = 'CE'
group by t.noshipid, y.nofolder
servidor distante está em 2008 R2.
eu recebo de volta um erro
Msg 8522, Nível 16, Estado 3, Linha 1 O Microsoft Distributed Transaction Coordinator (MS DTC) interrompeu esta transação.
Se eu executar a mesma consulta no servidor de produção que é 2008 R2, sem erros.
1: O login do SQL em questão possui o acesso necessário.
2: O provedor que está sendo usado para conectar ao servidor 2008 R2 é SQLNCLI10
Perguntas:
1: É possível que a atualização do servidor DEV para 2014 esteja causando esses problemas?
2: Há algum problema conhecido usando um identificador de quatro partes de 2014 a 2008 R2?
from distantserver.distantdatabase.dbo.sometable
em vez de usar openquery
FROM OPENQUERY([distantserver],
pois usando OPENQUERY, a consulta não retorna erros.
3: Há alguma opção sp_configure ou opções de servidor vinculado que preciso configurar por causa de 2014?
Atualização 14:41
se eu adicionar
BEGIN DISTRIBUTED TRANSACTION
no topo, a parte distribuída funciona bem. Só quero enfatizar o fato de que antes da atualização, isso não era necessário.
Idealmente, você deve usar o
SQLNCLI11
e nãoSQLNCLI10
. SQLNCLI11 desde que se conecta de volta às versões SQL 2008R2/2008/2005.Existe um bug conhecido que vale a
SQLNCLI10
pena conhecer (embora mostre que há um problema ao conectar do SQL Server 2008R2 para 2000, mas mostra que você o está encontrando do SQL Server 2014 para 2008R2).Além disso, como você está usando servidores vinculados - consulte: Qual é mais eficiente: selecionar no servidor vinculado ou inserir no servidor vinculado?