Como recarregar um servidor vinculado?

14

Estou usando o Microsoft SQL Server 2014 Enterprise Edition. Ocorre um problema nos servidores vinculados nos quais é necessário reiniciar o servidor ou interromper o MSSQLSERVERserviço. Quando o servidor está em execução novamente, os servidores vinculados (para o DB2) não funcionam corretamente e o SQL Server mostra este erro:

Mensagem 7302, nível 16, estado 1, linha 10
Não é possível criar uma instância do provedor OLE DB "DB2OLEDB" para o servidor vinculado "Airspe".

Somente após reiniciar o servidor várias vezes o servidor vinculado começa a funcionar.

  1. Por que é necessário reiniciar o servidor várias vezes para obter servidores vinculados?
  2. Existem outras soluções?

Este é o script para criar um dos servidores vinculados:

EXEC master.dbo.sp_addlinkedserver 
@server = N'AIRS', 
@srvproduct=N'Microsoft OLE DB Provider for DB2', 
@provider=N'DB2OLEDB', 
@datasrc=N'###.###.###.##',@provstr=N'Provider=DB2OLEDB;
    Data Source=#####;Persist Security Info=True;Password=**********;
    User ID=######;Initial Catalog=######;
    Network Address=###.###.###;Package Collection=AICOLDP;DBMS Platform=DB2/AS400',
@catalog=N'#####'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'AIRS',@useself=N'False',@locallogin=NULL,@rmtuser=N'#####',@rmtpassword='########'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'rpc', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'rpc out', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'collation name', @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'remote proc transaction promotion', @optvalue=N'true'

Esta é a configuração do provedor: provider_configuration

MelgoV
fonte

Respostas:

1

Acredito que algo esteja faltando na configuração feita para o DB2 Link.

a cadeia de conexão deve se parecer com isso primeiro.

Provider=DB2OLEDB; User ID=db2user; Password=mypassword; Initial Catalog=mydatabase;
Network Transport Library=TCP; Host CCSID=37;PC Code Page=1208;
Network Address=111.111.111.333; Network Port=446; Package Collection=MSDB2COL; 
Process Binary as Character=False; Connect Timeout=15; Units of Work=RUW;
DBMS Platform=DB2/AS400;Defer Prepare=False;Rowset Cache Size=0; Max Pool Size=100;
Persist Security Info=True;Connection Pooling=True;Derive Parameters=False;

Adicione parâmetros ausentes, para que o sistema não defina os parâmetros Automático / rando, que devem resolver o problema.

MarmiK
fonte
0

Resposta do wiki da comunidade :

O problema foi a arquitetura. Tivemos 32 bits; agora migramos nosso sistema para outro servidor com o SQL Server 2014 Enterprise de 64 bits e todos os nossos problemas terminaram - MelgoV (autor da pergunta).


Outras sugestões deixadas nos comentários, caso ajudem outras pessoas:

Não é um comportamento normal ter que reiniciar, exceto durante as alterações na configuração. Você deve desativar a opção em processo se se preocupa com a estabilidade do banco de dados núcleo - caso contrário, erros no driver do servidor vinculado podem causar uma falha no mecanismo.

Não é trivial começar a trabalhar e tem vários efeitos indiretos, por exemplo, sobre como e o que ele usa para apresentar credenciais de segurança na rede. Espere passar um dia tentando desvendar isso se você seguir esse caminho.


O problema pode ter a ver com o próprio driver da Microsoft. Use um driver fornecido pela IBM . Instruções para instalar isso podem ser encontradas aqui . Os drivers fornecidos pelo fornecedor geralmente são muito superiores: mais estáveis ​​e com melhor desempenho, em comparação com os fornecidos pela Microsoft.

user126897
fonte