Após cerca de 3 dias de tentativas, não consigo criar um servidor vinculado do SQL Server 2016 para o Informix 11.5. Eu não tentei isso com outras versões (2008R2, etc) desde que eu queria configurar a conexão em um ambiente de teste primeiro.
O que eu fiz
- Instalou o driver OLE DB Informix mais recente na máquina host do SQL Server
- Configurou um DSN do sistema para a configuração do driver ODBC do IBM Informix
- Testou a conectividade das configurações de DSN (o teste é bom) depois de alterar as configurações de localidade para que o cliente e o servidor correspondam e o servidor esteja correto.
- Tentativa de criar o servidor vinculado de duas maneiras abaixo.
- Pesquisei e li tudo o que pude para resolver isso sem sucesso.
1) Usando as instruções do IBM Informix com o OLE DB Provider em que recebo o seguinte erro (independentemente de eu usar um DNS na string do provedor):
Não é possível inicializar o objeto de fonte de dados do provedor OLE DB "Ifxoledbc" para o servidor vinculado "UCCX". O provedor OLE DB "Ifxoledbc" para o servidor vinculado "UCCX" retornou a mensagem "EIX000: (-23197)" Incompatibilidade de informações de localidade do banco de dados" (Microsoft SQL Server, erro: 7303)
A localidade do banco de dados é en_US.57372
2) Usando o Microsoft OLE DB Provider for SQL Server conforme explicado neste blog que retorna o erro:
Provedor de pipes nomeados: não foi possível abrir uma conexão com o SQL Server. O provedor OLE DB SQLNCLI11 para servidor vinculado UCCX retornou a mensagem "Tempo limite de login expirado" O provedor OLE DB SQLNCLI11 para servidor vinculado UCCX retornou uma mensagem "Ocorreu um erro relacionado à rede ou específico da instância ao estabelecer uma conexão com o SQL Server. O servidor não foi encontrado ou não acessível. Verifique se o nome da instância está correto e se o SQL Server está configurado para permitir conexões remotas. SQLNCLI11 para servidor vinculado UCCX retornou a mensagem "Atributo de string de conexão inválido"
Eu tenho muito pouca experiência com o Informix, o que deve ser aparente e esta não é uma instalação local, é uma instância da Cisco, como você provavelmente aprendeu nos blogs que eu estava usando. Qualquer conselho seria apreciado.
Tivemos um pesadelo configurando algo semelhante, especificamente com o problema de conectar-se a vários ambientes Informix. Eu tinha várias instâncias do Informix que precisavam ser vinculadas a uma única instância do SQL Server para fins de armazenamento e fui informado pelo nosso SME residente que isso era impossível; apenas uma única instância do Informix pode ser referenciada por servidor.
Eu sempre recebia os mesmos erros que você, e nada que eu conseguisse desenterrar online provou ser útil.
Por fim, a solução tinha várias partes, das quais você fez as primeiras:
IBM Informix ODBC Driver
deve ser instalado no servidor de banco de dados.O truque com a configuração do Linked Server é usar o seguinte (itens em codeblocks são literais):
Microsoft OLE DB Provider for ODBC Drivers
Ifxoledbc
{IBM INFORMIX ODBC DRIVER}
Se você é mais uma pessoa do tipo SQL manual, veja abaixo. A string do provedor é inserida em uma variável apenas para fins de comentários embutidos, enquanto ainda possui código executável. Modifique conforme necessário:
Como você está lidando com uma única instância, deve ser suficiente simplesmente corresponder aos valores usados para criar seu DSN do sistema. Se você precisar adicionar servidores vinculados adicionais para outras instâncias, isso pode ser feito seguindo exatamente o mesmo formato descrito acima, sem entradas de DSN adicionais.
Espero que isso ajude.