Olá pessoal!
Neste post, gostaria de compartilhar com vocês algumas formas de identificar a versão e edição de todas as instâncias do servidor utilizando xp_regread e Powershell. Vi um usuário enviando essa dúvida em um grupo do Whatsapp e não encontrei muitas soluções na internet, o que me motivou a escrever esse artigo.
Como identificar a versão e edição da instância logada
Caso você queira identificar as informações da instância em que está conectado, é algo bem simples:
1 |
SELECT @@VERSION |
Você também pode identificar essas informações utilizando a função SERVERPROPERTY:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
SELECT SERVERPROPERTY('MachineName') AS [MachineName], SERVERPROPERTY('ServerName') AS [ServerName], SERVERPROPERTY('InstanceName') AS [Instance], SERVERPROPERTY('IsClustered') AS [IsClustered], SERVERPROPERTY('ComputerNamePhysicalNetBIOS') AS [ComputerNamePhysicalNetBIOS], CASE LEFT(CONVERT(VARCHAR, SERVERPROPERTY('ProductVersion')), 4) WHEN '8.00' THEN 'SQL Server 2000' WHEN '9.00' THEN 'SQL Server 2005' WHEN '10.0' THEN 'SQL Server 2008' WHEN '10.5' THEN 'SQL Server 2008 R2' WHEN '11.0' THEN 'SQL Server 2012' WHEN '12.0' THEN 'SQL Server 2014' WHEN '13.0' THEN 'SQL Server 2016' WHEN '14.0' THEN 'SQL Server 2017' WHEN '15.0' THEN 'SQL Server 2019' ELSE 'SQL Server 2019+' END AS [SQLVersionBuild], SERVERPROPERTY('Edition') AS [Edition], SERVERPROPERTY('ProductLevel') AS [ProductLevel], SERVERPROPERTY('ProductUpdateLevel') AS [ProductUpdateLevel], SERVERPROPERTY('ProductVersion') AS [ProductVersion], SERVERPROPERTY('ProductMajorVersion') AS [ProductMajorVersion], SERVERPROPERTY('ProductMinorVersion') AS [ProductMinorVersion], SERVERPROPERTY('ProductBuild') AS [ProductBuild], SERVERPROPERTY('ProductBuildType') AS [ProductBuildType], SERVERPROPERTY('ProductUpdateReference') AS [ProductUpdateReference], SERVERPROPERTY('ProcessID') AS [ProcessID], SERVERPROPERTY('Collation') AS [Collation], SERVERPROPERTY('IsFullTextInstalled') AS [IsFullTextInstalled], SERVERPROPERTY('IsIntegratedSecurityOnly') AS [IsIntegratedSecurityOnly], SERVERPROPERTY('FilestreamConfiguredLevel') AS [FilestreamConfiguredLevel], SERVERPROPERTY('IsHadrEnabled') AS [IsHadrEnabled], SERVERPROPERTY('HadrManagerStatus') AS [HadrManagerStatus], SERVERPROPERTY('IsXTPSupported') AS [IsXTPSupported], SERVERPROPERTY('BuildClrVersion') AS [Build CLR Version]; |
Como identificar a versão e edição de todas as instâncias
O problema em questão é quando você precisa identificar as informações de servidores que possuem várias instâncias, o que pode acabar deixando essa atividade um pouco trabalhosa, de acordo com o número de instâncias do servidor.
Como identificar a versão e edição de todas as instâncias utilizando T-SQL
Para atender a essa necessidade, escrevi o script abaixo, que utiliza a procedure de sistema xp_regread para pesquisar o nome das instâncias no registro do Windows. Após isso, recupera as informações de cada uma dessas instâncias e ainda utiliza a procedure xp_cmdshell para ler informações do arquivo de ERRORLOG de cada instância para identificar algumas informações (praticamente, simula o @@VERSION).
Visualizar código-fonteComo identificar a versão e edição de todas as instâncias utilizando Powershell
Uma outra forma de conseguir capturar as informações básicas de todas as instâncias de uma lista de servidores é utilizando o script Powershell abaixo:
Visualizar código-fonte (utilizando apenas PowerShell) Visualizar código fonte (utilizando T-SQL, xp_cmdshell e PowerShell)Neste exemplo, você irá popular o arquivo de entrada (C:\Temp\servidores.txt) com o hostname dos servidores que você deseja analisar as edições e versões do SQL Server.
Após executar o script Powershell, será gerado um arquivo CSV (C:\Temp\versao.csv) com as informações coletadas:
É isso aí, pessoal!
Espero que tenham gostado desse post e até a próxima.
This is great. Can you also add a column about when latest or last SP\CU was installed on the server?