Olá amiguinhos,
Vou compartilhar com vocês mais um “Casos do Dia a Dia”, dessa vez envolvendo a Falha de Login e o SQL Telemetry. Você já viu alguma das mensagens abaixo? Sabe como resolver esse erro?
“Login failed for user ‘domain\computername$’. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]”
“Login failed for user ‘NT Service\SQLTELEMETRY$’. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]
Error: 18456, Severity: 14, State: 5.”
Nesse post, vou explicar o que gera esse erro e como resolvê-lo. #gogogo
ALERTA – Login Failed:
Em mais um dia comum na vida de um DBA, recebemos o ALERTA abaixo do monitoramento que temos em um dos nossos clientes que informava algumas Falhas de Login.
OBS: O usuário era o próprio nome do servidor do banco de dados: “domain\computername$”.
Se você ainda não possui Alertas para Monitorar o seu Banco de Dados #ficaadica.
Error Log – SQL Server
O próximo passo foi conectar no servidor do cliente para verificar o Error Log do SQL Server. Nesse momento, identifiquei que as falhas aconteciam a cada 5 minutos.
OBS: Aqui coloquei um print com o teste que fiz na minha máquina, mas o comportamento foi o mesmo.
No meu teste local ficou bem claro que o problema estava relacionado com o usuário “NT Service\SQLTELEMETRY$SQL2017”.
OBS: O termo “SQL2017” é o nome da minha instância nomeada.
“Login failed for user ‘NT Service\SQLTELEMETRY$SQL2017’. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]
Error: 18456, Severity: 14, State: 5.”
Contudo, no caso do cliente informava apenas o nome do servidor “domain\computername$”. Isso era muito genérico e poderia ser várias coisas ainda.
“Login failed for user ‘domain\computername$’. Reason: Could not find a login matching the name provided. [CLIENT: <local machine>]”
Event Viewer – Windows
Com isso, resolvi investigar o Event Viewer do Windows para tentar encontrar mais algumas informações que pudessem ajudar a entender e resolver o problema.
Nesse passo eu encontrei uma informação muito importante: User “NT SERVICE\SQLTELEMETRY”.
Visto isso, encontrei o link abaixo que resume muito bem o nosso problema:
https://dba.stackexchange.com/questions/147082/nt-service-sqltelemetry-user
“I’ve noticed that SQL Server 2016 installations include a new default login called NT SERVICE\SQLTELEMETRY. I’m aware that for the free editions of SQL Server 2016 you agree in the license to allow your server to send telemetry information to Microsoft. I would guess that this login is associated with that work. As part of our new instance installation process we prefer to clean up and remove any unused system or default logins to avoid potential holes in security or clutter. Does this account do anything particularly important such that we’d want to keep it and if not would it break the license agreement to disable or delete it? I should note that our SQL Servers are generally not Internet facing.”
Resumindo:
No SQL Server 2016 surgiu o “telemetry service”, também conhecido como SQLCEIP “Customer Experience Improvement Program”. Ele é utilizado para coletar algumas informações sobre o banco de dados. Para mais detalhes, favor consultar os links abaixo:
Voltando ao nosso caso, o problema era que o usuário “NT SERVICE\SQLTELEMETRY” NÃO EXISTIA no banco de dados. Como podemos ver nos links acima, ele é utilizado internamente pelo SQL Server e por isso gerava uma mensagem de erro a cada 5 minutos.
Solução:
Ao RECRIAR o usuário “NT SERVICE\SQLTELEMETRY” o problema foi resolvido e não apareceram mais mensagens de Falha de Login.
Usuário SQLTELEMETRY desabilitado:
Pode ser que você também encontre a mensagem abaixo:
“Login failed for user ‘NT Service\SQLTELEMETRY$’. Reason: The account is disabled. [CLIENT: <local machine>]
Error: 18470, Severity: 14, State: 1.”
Nesse caso, o erro é bem claro e informa que o usuário “NT SERVICE\SQLTELEMETRY$SQL2017” está desabilitado. Para resolver, basta habilitar novamente o usuário:
1 2 3 4 |
USE master GO ALTER LOGIN [NT SERVICE\SQLTELEMETRY$SQL2017] ENABLE GO |
Espero que tenha gostado e que isso também possa ser útil no seu dia a dia. Até o próximo post!
Me siga no LinkedIn e YouTube para ficar por dentro das novidades.
Abraço,
Luiz Vitor França Lima
Consultor SQL Server
Olá Luiz.
Não seria o caso de desativar esse serviço? Ou há alguma vantagem para o DBA em mantê-lo ativo?
Olá José,
Ao escrever o post resolvi não entrar nesse detalhe, pois a documentação oficial da Microsoft informa que esse procedimento não é suportado:
– Removing or disabling the SQL CEIP service is not supported.
– Removing the SQL CEIP resources from the Cluster Group is not supported.
A documentação oficial também informa que o CEIP pode ser desabilitado apenas em versões pagas.
– You can disable the sending of information to Microsoft only in paid versions of SQL Server.
Na prática, ainda não desabilitei isso em nenhum lugar. Você já fez isso alguma vez? Foi por algum motivo específico?
Segue abaixo alguns links como referência:
https://docs.microsoft.com/en-us/sql/sql-server/usage-and-diagnostic-data-configuration-for-sql-server?view=sql-server-2017
https://docs.microsoft.com/en-us/sql/sql-server/usage-and-diagnostic-data-in-local-audit?view=sql-server-2017#turning-local-audit-on-or-off
https://www.brentozar.com/archive/2019/02/what-queries-does-microsofts-telemetry-service-run-on-your-sql-server/
Abraço,
Luiz Vitor
Pingback: Casos do Dia a Dia – BUG – Login Failed x Maintenance Plan x SQL Server Authentication – Luiz Lima