Eu tenho 2 servidores de banco de dados:
ServidorA : Windows Server 2012 R2 Standard, SQL Server 2014 (SP3) (KB4022619) Standard Edition.
ServerB : Windows Server 2016 Datacenter, SQL Server 2016 (SP2-CU6) (KB4488536) Enterprise Edition
Ambos são servidores x64 localizados em DCs diferentes, sob domínios diferentes.
Propósito:
Estamos planejando migrar os bancos de dados de produção do ServidorA para o ServidorB.
Medida tomada: Antes de migrar o banco de dados de produção, eu queria validá-lo primeiro no ambiente de desenvolvimento.
Todos os bancos de dados, servidor vinculado (com configurações semelhantes), logins etc. foram copiados corretamente do ServidorA para o ServidorB.
Driver ODBC instalado do banco de dados Pervasive no ServerB (semelhante ao ServerA).
Exportou todos os DSNs do sistema do ServidorA para o ServidorB.
Atualizadas as configurações do MSDTC no ServerB (semelhante ao ServerA).
Observação: o servidor vinculado está fazendo referência ao banco de dados abrangente.
Enfrentamento de Problemas;
Depois que todos esses usuários conseguirem fazer login, os bancos de dados estiverem acessíveis, os relatórios estiverem em execução e o servidor (ServerB) estiver funcionando bem, os usuários poderão SELECIONAR tabelas do banco de dados Pervasive usando o servidor vinculado.
Mas o problema é que "os usuários não conseguem executar a atualização no banco de dados pervasivo usando o servidor vinculado no ServerB.
As consultas de atualização 1st e 2nd estão falhando com o mesmo erro:
--1------------------------------------------------------------
UPDATE OPENQUERY (LinkedServerName, 'SELECT Column_1,Column_2,Column_3,Column_4 FROM TableName WHERE Column_3 = 5910 AND Column_4 = 2')
SET Column_1='2019-02-01',Column_2='2019-07-01';
--2------------------------------------------------------------
UPDATE OQ
SET Column_1='2019-02-01',Column_2='2019-07-01'
FROM OPENQUERY (LinkedServerName, 'SELECT * FROM TableName') OQ
WHERE Column_3 = 5910 AND Column_4 = 2;
Erro1:
Msg 7399, Level 16, State 1, Line 4
The OLE DB provider "MSDASQL" for linked server "LinkedServerName" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7343, Level 16, State 4, Line 4
The OLE DB provider "MSDASQL" for linked server "LinkedServerName" could not UPDATE table "[MSDASQL]". Unknown provider error.
O erro da 3ª consulta é diferente.
UPDATE LinkedServerName.DBName..TableName
SET Column_1='2019-02-01',Column_2='2019-07-01'
WHERE Column_3 = 5910 AND Column_4 = 2;
Erro 2:
Msg 7399, Level 16, State 1, Line 26
The OLE DB provider "MSDASQL" for linked server "LinkedServerName" reported an error. The provider reported an unexpected catastrophic failure.
Msg 7343, Level 16, State 4, Line 26
The OLE DB provider "MSDASQL" for linked server "LinkedServerName" could not UPDATE table "[LinkedServerName].[Database]..[TableName]". Unknown provider error.
A mesma consulta está sendo executada com sucesso no ServerA.
A solução será apreciada.
Obrigado!
Esse problema é causado pela atualização do SQL Server de SQL2014 para SQL2016 ou posterior. O provedor Microsoft OLE DB para drivers ODBC foi alterado. Agora ele tem mais suporte a recursos ISO e ODBC. Esta é uma alteração importante para algumas conexões ODBC.
Este driver ( MSDASQL ) é usado para encapsular uma conexão ODBC no servidor, neste caso, para o banco de dados pervasivo e permitir que ele atue como um servidor vinculado. O wrapper permite a funcionalidade OPEN Query, bem como chamadas de consulta vinculadas padrão.
O problema com a alteração é que o novo wrapper está enviando dados extras que não estão sendo manipulados se você estiver usando o driver ODBC versões 11 ou anteriores para atividade de consulta. Ele não pode manipular as informações adicionais e retornará um erro na execução. Ele será capaz de se conectar, no entanto.
A versão 12 do driver ODBC difundido funcionará apenas para consulta, mas a consulta aberta não funcionará. Você continuará recebendo "falha catastrófica inesperada" nas atualizações de consulta aberta.
Eu recomendo que você atualize para a versão 13.3. Esta versão do Actian suportará seleções e atualizações e resolverá o erro de consulta aberta. Não sei se você vai precisar do suporte do Actian para o licenciamento do motorista.