[SCRIPT] – Query per restituire Informazioni dell’Ambiente SQL Server

Alle volte, sia per analizzare i vostri ambienti (un nuovo ambiente in un nuovo cliente, per esempio) oppure per sistemare e organizzare i vostri server, è necessario ottenere informazioni come per esempio il totale della RAM o la versione del Sistema Operativo o, anche, la propria versione del SQL Server. Per questo c’è uno script che può essere utile per voi:
 /*INFORMAÇÕES DO AMBIENTE
 SQL Server 2012 e Posterior*/
 SELECT 
  SERVERPROPERTY('MachineName') AS 'Servidor',
  SERVERPROPERTY('InstanceName') AS 'Instância',
  RIGHT(@@version, LEN(@@version)- 3 -charindex (' ON ',@@VERSION)) 'Versão do S.O.',
  info.virtual_machine_type_desc as 'Tipo de VM',
  CASE 
   WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '8%' THEN 'SQL Server 2000'
   WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '9%' THEN 'SQL Server 2005'
   WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '10.0%' THEN 'SQL Server 2008'
   WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '10.5%' THEN 'SQL Server 2008 R2'
   WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '11%' THEN 'SQL Server 2012'
   WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '12%' THEN 'SQL Server 2014'
   WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '13%' THEN 'SQL Server 2016'
   WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '14%' THEN 'SQL Server 2017'     
   ELSE 'unknown'
  END AS 'Versão do SQL Server',
  SERVERPROPERTY('ProductLevel') AS 'Service Pack',
  SERVERPROPERTY('Edition') AS 'Edição',
  SERVERPROPERTY('ProductVersion') AS 'Versão do Produto',
  CASE
   WHEN CONVERT (VARCHAR(8), SERVERPROPERTY('IsClustered')) LIKE '0' THEN 'NÃO'
   WHEN CONVERT (VARCHAR(8), SERVERPROPERTY('IsClustered')) LIKE '1' THEN 'SIM'
   WHEN CONVERT (VARCHAR(8), SERVERPROPERTY('IsClustered')) IS NULL THEN 'NULO'
   ELSE 'unknown'
   END AS 'Clusterizado',
  CONNECTIONPROPERTY('net_transport') AS 'Net Transport',
  CONNECTIONPROPERTY('protocol_type') AS 'Tipo de Protocolo',
  CONNECTIONPROPERTY('auth_scheme') AS 'Autenticação',
  CONNECTIONPROPERTY('local_net_address') AS 'IP Servidor',
  (SELECT local_tcp_port FROM   sys.dm_exec_connections WHERE  session_id = @@SPID) AS 'Porta TCP do Servidor' ,
  info.cpu_count/info.hyperthread_ratio AS 'Cores',
  info.cpu_count AS 'Processadores', 
  info.hyperthread_ratio AS Hyperthread_Ratio,
  info.affinity_type_desc 'Afinidade de CPU', 
  info.physical_memory_kb/1024 AS 'Total RAM do Servidor (em MB)',
  mem.available_physical_memory_kb/1024 AS 'RAM disponivel',
  mem.system_memory_state_desc 'Status da memoria fisica',
  (SELECT value FROM sys.configurations WHERE name like '%min server memory%') as 'Min de Memória da Instância (em MB)',
  (SELECT value FROM sys.configurations WHERE name like '%max server memory%') as 'Max de Memória da Instância (em MB)',
  mem.total_page_file_kb/1024 as 'Page File Total (em MB)',
  mem.available_page_file_kb/1024 as 'Page File disponivel (em MB)',
 --	info.virtual_memory_kb/1048576 as 'Memoria virtual (em GB)',
  info.sqlserver_start_time 'Data do ultimo startup', 
  SERVERPROPERTY('InstanceDefaultDataPath') AS 'Local Datafile (Default)',
  SERVERPROPERTY('InstanceDefaultLogPath') AS 'Local Logfile (Default)'
 FROM sys.dm_os_sys_info info
 join sys.dm_os_sys_memory mem on (mem.total_physical_memory_kb = info.physical_memory_kb)
 
 


 
/*INFORMAÇÕES DO AMBIENTE
SQL Server 2005 - SQL Server 2008R2*/
declare @DefaultData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @DefaultData output

declare @DefaultLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', @DefaultLog output

declare @MasterData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters', N'SqlArg0', @MasterData output
select @MasterData=substring(@MasterData, 3, 255)
select @MasterData=substring(@MasterData, 1, len(@MasterData) - charindex('\', reverse(@MasterData)))

declare @MasterLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters', N'SqlArg2', @MasterLog output
select @MasterLog=substring(@MasterLog, 3, 255)
select @MasterLog=substring(@MasterLog, 1, len(@MasterLog) - charindex('\', reverse(@MasterLog)))

SELECT 
 SERVERPROPERTY('MachineName') AS 'Servidor',
 SERVERPROPERTY('InstanceName') AS 'Instância',
 RIGHT(@@version, LEN(@@version)- 3 -charindex (' ON ',@@VERSION)) 'Versão do S.O.',
 info.virtual_machine_type_desc as 'Tipo de VM',
 CASE 
  WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '8%' THEN 'SQL Server 2000'
  WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '9%' THEN 'SQL Server 2005'
  WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '10.0%' THEN 'SQL Server 2008'
  WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '10.5%' THEN 'SQL Server 2008 R2'
  WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '11%' THEN 'SQL Server 2012'
  WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '12%' THEN 'SQL Server 2014'
  WHEN CONVERT(VARCHAR(15), SERVERPROPERTY ('productversion')) like '13%' THEN 'SQL Server 2016'     
  ELSE 'unknown'
 END AS 'Versão do SQL Server',
 SERVERPROPERTY('ProductLevel') AS 'Service Pack',
 SERVERPROPERTY('Edition') AS 'Edição',
 SERVERPROPERTY('ProductVersion') AS 'Versão do Produto',
 CASE
  WHEN CONVERT (VARCHAR(8), SERVERPROPERTY('IsClustered')) LIKE '0' THEN 'NÃO'
  WHEN CONVERT (VARCHAR(8), SERVERPROPERTY('IsClustered')) LIKE '1' THEN 'SIM'
  WHEN CONVERT (VARCHAR(8), SERVERPROPERTY('IsClustered')) IS NULL THEN 'NULO'
  ELSE 'unknown'
  END AS 'Clusterizado',
 CONNECTIONPROPERTY('net_transport') AS 'Net Transport',
 CONNECTIONPROPERTY('protocol_type') AS 'Tipo de Protocolo',
 CONNECTIONPROPERTY('auth_scheme') AS 'Autenticação',
 CONNECTIONPROPERTY('local_net_address') AS 'IP Servidor',
 (SELECT local_tcp_port FROM   sys.dm_exec_connections WHERE  session_id = @@SPID) AS 'Porta TCP do Servidor' ,
 info.cpu_count/info.hyperthread_ratio AS 'Cores',
 info.cpu_count AS 'Processadores', 
 info.hyperthread_ratio AS Hyperthread_Ratio,
 info.affinity_type_desc 'Afinidade de CPU', 
 info.physical_memory_in_bytes/1048576 AS 'Total RAM em MB',
 mem.available_physical_memory_kb/1024 AS 'RAM disponivel',
 mem.system_memory_state_desc 'Status da memoria fisica',
 (SELECT value FROM sys.configurations WHERE name like '%min server memory%') as 'Min de Memória da Instância (em MB)',
 (SELECT value FROM sys.configurations WHERE name like '%max server memory%') as 'Max de Memória da Instância (em MB)',
 mem.total_page_file_kb/1024 as 'Page File Total em MB',
 mem.available_page_file_kb/1024 as 'Page File disponivel em MB',
 --ROUND(info.virtual_memory_in_bytes/1099511627776,4,1) as 'Memoria virtual em GB',
 info.sqlserver_start_time 'Data do ultimo startup', 
 (select isnull(@DefaultData, @MasterData)) as 'Local DataFile',
 (select isnull(@DefaultLog, @MasterLog)) as 'Local LogFile'
 FROM sys.dm_os_sys_info info
join sys.dm_os_sys_memory mem on (mem.total_physical_memory_kb = info.physical_memory_in_bytes/1024)

 

 

Chi Sono

Bruno Bragatto è laureato in Automazione Industriale nell’IFSP (San Paolo – Brasile), con specializzazione in Database nella FIAP (San Paolo – Brasile) e è certificato Oracle Database 11g Administrator Certified Associate e Microsoft MCSA – SQL 2016 Database Administration.

OCA - Oracle 11g Database Administrator