Seu SQL Server está atualizado ? Retornando a última versão do Service Pack (SP) ou Cumulative Update (CU) para a sua instância

Visualizações: 463
Tempo de Leitura: 6 minutos

Fala pessoal!
Nesse artigo eu quero trazer pra vocês uma solução que criei ontem para incluir em um check-list que estou desenvolvendo, que me permite identificar a última versão do Service Pack (SP) e Cumulative Update (CU) para a versão do SQL Server em que estou executando esse código.

Para identificar os últimos updates para cada versão, vou utilizar o site https://sqlserverbuilds.blogspot.com/, que está sempre atualizado com as últimas atualizações do SQL Server (também poderia ser o https://buildnumbers.wordpress.com/sqlserver/).

Para realizar a extração dos dados da página para o SQL Server, vou utilizar o recurso OLE Automation, que já publiquei vários artigos explicando como realizar WebScraping de páginas WEB e API’s utilizando esse recurso.

Após recuperar o código-fonte HTML da página, preciso identificar a tabela que contém os dados de acordo com a versão que eu estou buscando e também preciso realizar alguns tratamentos no código retornado para corrigir algumas inconsistências:

  • Conversão de entidades HTML (ex: &nbsp )
  • Atributos de tags sem aspas (ex: class=sp ao invés de class=”sp” = HTML inválido)
  • Tags abertas e não fechadas (ex: <td>Coluna1<td>Coluna2 ao invés de <td>Coluna1</td><td>Coluna2</td>)

Essa acaba sendo a parte mais trabalhosa desse script, porque se essas inconsistências no código não forem sanadas, o SQL Server me retorna erro ao tentar converter o XHTML para XML.

Após realizar todos esses tratamentos e converter o código XHTML para XML, aplico comandos XQuery para identificar a primeira linha da tabela da respectiva versão do SQL Server e retorno na SP

Código-fonte

Após um breve resumo do que precisei fazer para conseguir realizar essa tarefa, vou disponibilizar abaixo o código-fonte da solução criada, que pode ser utilizada com um simples “F5”.

Exemplos de uso

Agora vou demonstrar alguns exemplos de uso de como essa Stored Procedure funciona na prática.

Recuperando a última atualização a partir de um SQL Server 2017 atualizado

Resultado:

Recuperando a última atualização a partir de um SQL Server 2017

Resultado:

Recuperando a última atualização a partir de um SQL Server 2008 R2

Resultado:

Recuperando a última atualização a partir de um SQL Server 2019

Resultado:

Preciso mostrar TODAS as atualizações de uma versão do SQL Server

Caso você queira mostrar todas as atualizações da versão desejada do SQL Server e não só a última, pode utilizar o código abaixo (após a linha 150):

Resultado:

Conclusão

Bom pessoal, espero que vocês tenham gostado desse artigo. Estou começando a utilizá-lo em ambientes para fazer um check-up rápido e ele acabou sendo bem prático. Caso você queira criar um monitoramento para isso em seu ambiente, analisando todas as instâncias, pode criar essa Stored Procedure em todas as instâncias e utilizar os dados retornados para enviar e-mails automáticos conforme a sua necessidade.

Nesse cenário de monitoramento, uma outra solução muito interessante é a do Reginaldo Silva, que fez o post Get-SQLBuildVersion uma forma diferente para se manter atualizado, onde ele compartilhou uma solução escrita em PowerShell, que ele desenvolveu, onde ele passa o nome da instância como parâmetro e o script já faz essa validação e parâmetros para enviar o resultado por e-mail. Muito prático para usar em várias instâncias.

Assim como o Reginaldo, vou destacar o artigo Cumulative update, aplicar ou não, eis a questão! do Luciano Moreira (Luti), onde ele expõe suas opiniões sobre a aplicação constante de atualizações do SQL Server (concordo com ele), visto que muitos DBA’s não tem o hábito de manter o SQL Server atualizado com receio de introduzir um bug novo após a aplicação de alguma atualização.

Na minha visão, isso não faz muito sentido nos dias de hoje, pois esses acontecimentos são bem raros e, ao aplicar sempre as atualizações, seu ambiente fica sempre atualizado com novos recursos, correções de bugs e melhorias em segurança, além de ter um processo de aplicação de updates mais maduro e comum no dia a dia da empresa.

Ah, vale lembrar que a partir do SQL Server 2017, não teremos mais Service Packs, apenas Cumulative Updates, conforme foi documentado nesse artigo aqui.

É isso aí, pessoal.
Espero que tenham gostado desse artigo e até mais!