Editado: A atualização do ODBC para a versão 13.1 corrige o problema abaixo.

Recentemente instalei o SQL Server 2016 em um ambiente de Cluster. Para minha surpresa, após a instalação vi que o SQL Agent não funcionava. Por mais que eu iniciasse o serviço, após alguns minutos o serviço parava automaticamente. Após analisar o log do serviço do SQL Agent (SQLAGENT.OUT) no diretório de logs do SQL Server. Pude identificar a causa do não funcionamento do serviço do SQL Server Agent. O SQL Agent não conseguia localizar a minha instância do SQL Server.

2016-07-09 10:46:47 – ? [100] Microsoft SQLServerAgent version 13.0.1708.0 (X64 unicode retail build) : Process ID 9976
2016-07-09 10:46:47 – ? [495] The SQL Server Agent startup service account is NT Service\SQLAgent$SQL2016.
2016-07-09 10:47:22 – ! [150] SQL Server does not accept the connection (error: 53). Waiting for Sql Server to allow connections. Operation attempted was: Verify Connection On Start.
2016-07-09 10:47:22 – ! [000] Unable to connect to server ‘SERVIDOR\NOMEINSTANCIA‘; SQLServerAgent cannot start
2016-07-09 10:47:29 – ! [298] SQLServer Error: 53, Named Pipes Provider: Could not open a connection to SQL Server [53]. [SQLSTATE 08001]
2016-07-09 10:47:29 – ! [165] ODBC Error: 0, Login timeout expired [SQLSTATE HYT00]
2016-07-09 10:47:29 – ! [298] SQLServer Error: 53, A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. [SQLSTATE 08001]
2016-07-09 10:47:29 – ! [382] Logon to server SERVIDOR\NOMEINSTANCIA failed (DisableAgentXPs)
2016-07-09 10:47:29 – ? [098] SQLServerAgent terminated (normally)

1º Passo: Verifiquei se os protocolos de conexão expostos na mensagem de erro estavam habilitados. O Named Pipes estava funcionando corretamente.

novo

2º Passo: tentei localizar o servidor com o comando ping. Por se tratar do servidor local, o comando ping funcionou com sucesso.

3º Passo: Habilitar o AgentXP.


EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'Agent XPs', 1;
GO
RECONFIGURE WITH OVERRIDE;
GO
EXEC sp_configure 'show advanced options', 0;
GO
RECONFIGURE WITH OVERRIDE;
GO

Mesmo assim o erro persistiu.

4º Passo: Verificar as propriedades de conexão do SQL Agent. No management studio, abri as propriedades do Agent com o botão direito do mouse e cliquei na opção de “Connection”. Na configuração padrão o campo “Alias local host server” deve estar em branco, conforme a imagem abaixo:

blog2

No meu caso, tive que preencher o nome do servidor e a porta TCP utilizada pela instância. Após este ajuste, o SQL Server Agent funcionou corretamente. Ainda estou analisando o que levou o Agent a não encontrar a instância sem expor explicitamente o nome e a porta, mesmo com o SQL Browser ativo no servidor.

Observação: Caso tenham dúvidas onde encontrar o log do SQL Agent, basta executar o comando abaixo para localizar o diretório de logs do SQL Server:


SELECT REPLACE(

CAST(SERVERPROPERTY('ErrorLogFileName') as VARCHAR(100)),

'ERRORLOG', '')