Temos um pacote SSIS que funciona diariamente à meia-noite. Ele extrai dados do Active Directory usando consulta ADSI e envia os dados para um CRM.
A única vez que “falha” é no domingo à noite. Aqui está o problema: ele foi bem-sucedido e envia um e-mail informando que foi bem-sucedido, mas recebemos uma mensagem de erro informando que houve falha no SQL Sentry, no relatório de trabalho no SSRS e no histórico de trabalho do SQL. A consulta quase sempre é concluída em menos de dois minutos e vemos os dados no CRM.
Não há outros trabalhos em execução no momento da execução, nem há trabalhos que começaram mais cedo e ainda estão em execução à meia-noite. Isso começou há quatro semanas e ninguém fez nenhuma alteração. Quando abordamos nossa equipe de infraestrutura/sistemas para perguntar sobre quaisquer alterações, eles disseram não e sugeriram que poderia ser a partir de backups. Não há trabalhos de backup SQL nativos em execução no momento. Duvido que seja a Veeam que está causando esse problema, mas pensei em mencioná-lo de qualquer maneira.
Esta versão do SQL Server é 14.0.3465.1.
Windows Server 2016 Standard versão 1607 e foi totalmente corrigido na última quarta-feira.
Esta é a mensagem de erro e a consulta:
select q1.employeeNumber, 'telephoneNumber'=CASE WHEN right(dbo.udf_GetNumeric(q1.telephoneNumber),10)='0' THEN null ELSE right(dbo.udf_GetNumeric(q1.telephoneNumber),10) END,
'mobile'=CASE WHEN right(dbo.udf_GetNumeric(q1.mobile),10)='0' THEN null ELSE right(dbo.udf_GetNumeric(q1.mobile),10) END,
q1.company, q1.Country, q2.[3DigitCode], q2.CountryCode
from (SELECT EmployeeNumber, phoneNumber, mobile, company, 'Country'=CASE WHEN co is null THEN 'United States' ELSE co END FROM OPENQUERY( ADSI, 'SELECT EmployeeNumber, phoneNumber, mobile, mail, company, co, c, countryCode FROM ''LDAP://MyServer/OU=MyCompany USERS,DC=MyCompany,DC=com'' WHERE objectCategory = ''Person'' e objectClass = ''User'' e EmployeeNumber>=0 e EmployeeNumber<200000 e userAccountControl <>''514'' e userAccountControl<>''66050''')) como q1 LEFT OUTER JOIN Map_AD_Codes q2 em q2.Country = q1.Country
Depois de muita pesquisa e análise do desempenho, descobrimos que a causa era E/S alta. Usamos SQL Sentry, DMVs e logs para determinar que isso pode ter sido causado por backups de terceiros, neste caso, Veeam.
Trabalhamos com nosso grupo de infraestrutura/administradores de sistemas e determinamos esses backups completos, especificamente nas noites de domingo. Pudemos ver que os backups completos demoravam mais, eventualmente afetando os trabalhos do SSIS.
Agradeço a todos que dedicaram um tempo para ler a pergunta, mesmo que nenhuma resposta tenha sido dada.