scripts/collector/sqlserver/sql/serverProperties.sql (347 lines of code) (raw):

/* Copyright 2024 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. */ /* sys.dm_os_host_info - Applies to: SQL Server 2017 (14.x) and later */ SET NOCOUNT ON; SET LANGUAGE us_english; DECLARE @PKEY AS VARCHAR(256) DECLARE @CLOUDTYPE AS VARCHAR(256) DECLARE @PRODUCT_VERSION AS INTEGER DECLARE @TABLE_PERMISSION_COUNT AS INTEGER DECLARE @MACHINENAME AS VARCHAR(256) DECLARE @DMA_SOURCE_ID AS VARCHAR(256) DECLARE @DMA_MANUAL_ID AS VARCHAR(256) SELECT @PKEY = N'$(pkey)'; SELECT @CLOUDTYPE = 'NONE' SELECT @PRODUCT_VERSION = CONVERT(INTEGER, PARSENAME(CONVERT(NVARCHAR(255), SERVERPROPERTY('productversion')), 4)); SELECT @DMA_SOURCE_ID = N'$(dmaSourceId)'; SELECT @DMA_MANUAL_ID = N'$(dmaManualId)'; IF UPPER(@@VERSION) LIKE '%AZURE%' SELECT @CLOUDTYPE = 'AZURE' IF CHARINDEX('\', @@SERVERNAME)-1 = -1 SELECT @MACHINENAME = UPPER(@@SERVERNAME) ELSE SELECT @MACHINENAME = UPPER(SUBSTRING(CONVERT(NVARCHAR(255), @@SERVERNAME),1,CHARINDEX('\', CONVERT(NVARCHAR(255), @@SERVERNAME))-1)) IF OBJECT_ID('tempdb..#serverProperties') IS NOT NULL DROP TABLE #serverProperties; CREATE TABLE #serverProperties ( property_name nvarchar(255), property_value nvarchar(1024) ); /* need to record table permissions in order to determine if we can run certain serverprops queryies as some tables are not available in managed instances */ IF OBJECT_ID('tempdb..#myPerms') IS NOT NULL DROP TABLE #myPerms; CREATE TABLE #myPerms ( entity_name nvarchar(255), subentity_name nvarchar(255), permission_name nvarchar(255) ); INSERT INTO #myPerms SELECT * FROM fn_my_permissions('msdb.dbo.sysmail_server', 'OBJECT') WHERE permission_name = 'SELECT' and subentity_name =''; INSERT INTO #myPerms SELECT * FROM fn_my_permissions('msdb.dbo.sysmail_profile', 'OBJECT') WHERE permission_name = 'SELECT' and subentity_name =''; INSERT INTO #myPerms SELECT * FROM fn_my_permissions('msdb.dbo.sysmail_profileaccount', 'OBJECT') WHERE permission_name = 'SELECT' and subentity_name =''; INSERT INTO #myPerms SELECT * FROM fn_my_permissions('msdb.dbo.sysmail_account', 'OBJECT') WHERE permission_name = 'SELECT' and subentity_name =''; INSERT INTO #myPerms SELECT * FROM fn_my_permissions('msdb.dbo.log_shipping_secondary_databases', 'OBJECT') WHERE permission_name = 'SELECT' and subentity_name =''; INSERT INTO #myPerms SELECT * FROM fn_my_permissions('msdb.dbo.log_shipping_primary_databases', 'OBJECT') WHERE permission_name = 'SELECT' and subentity_name =''; INSERT INTO #myPerms SELECT * FROM fn_my_permissions('msdb.dbo.sysmaintplan_subplans', 'OBJECT') WHERE permission_name = 'SELECT' and subentity_name =''; INSERT INTO #myPerms SELECT * FROM fn_my_permissions('msdb.dbo.sysjobs', 'OBJECT') WHERE permission_name = 'SELECT' and subentity_name =''; INSERT INTO #serverProperties SELECT 'BuildClrVersion' AS Property, CONVERT(NVARCHAR(255), SERVERPROPERTY('BuildClrVersion')) AS Value UNION ALL SELECT 'Collation', CONVERT(NVARCHAR(255), SERVERPROPERTY('Collation')) UNION ALL SELECT 'CollationID', CONVERT(NVARCHAR(255), SERVERPROPERTY('CollationID')) UNION ALL SELECT 'ComparisonStyle', CONVERT(NVARCHAR(255), SERVERPROPERTY('ComparisonStyle')) UNION ALL SELECT 'Edition', CONVERT(NVARCHAR(255), SERVERPROPERTY('Edition')) UNION ALL SELECT 'EditionID', CONVERT(NVARCHAR(255), SERVERPROPERTY('EditionID')) UNION ALL SELECT 'EngineEdition', CONVERT(NVARCHAR(255), SERVERPROPERTY('EngineEdition')) UNION ALL SELECT 'HadrManagerStatus', COALESCE(CONVERT(NVARCHAR(255), SERVERPROPERTY('HadrManagerStatus')), '0') UNION ALL SELECT 'IsAdvancedAnalyticsInstalled', COALESCE(CONVERT(NVARCHAR(255), SERVERPROPERTY('IsAdvancedAnalyticsInstalled')), '0') UNION ALL SELECT 'IsClustered', COALESCE(CONVERT(NVARCHAR(255), SERVERPROPERTY('IsClustered')), '0') UNION ALL SELECT 'IsFullTextInstalled', CONVERT(NVARCHAR(255), SERVERPROPERTY('IsFullTextInstalled')) UNION ALL SELECT 'IsHadrEnabled', COALESCE(CONVERT(NVARCHAR(255), SERVERPROPERTY('IsHadrEnabled')), '0') UNION ALL SELECT 'IsIntegratedSecurityOnly', CONVERT(NVARCHAR(255), SERVERPROPERTY('IsIntegratedSecurityOnly')) UNION ALL SELECT 'IsXTPSupported', COALESCE(CONVERT(NVARCHAR(255), SERVERPROPERTY('IsXTPSupported')), '0') UNION ALL SELECT 'LCID', CONVERT(NVARCHAR(255), SERVERPROPERTY('LCID')) UNION ALL SELECT 'LicenseType', CONVERT(NVARCHAR(255), SERVERPROPERTY('LicenseType')) UNION ALL SELECT 'MachineName', @MACHINENAME UNION ALL SELECT 'NumLicenses', CASE WHEN SERVERPROPERTY('LicenseType') = 'DISABLED' THEN 'DISABLED' ELSE CONVERT(NVARCHAR(255), SERVERPROPERTY('NumLicenses')) END UNION ALL SELECT 'ProcessID', CONVERT(NVARCHAR(255), SERVERPROPERTY('ProcessID')) UNION ALL SELECT 'ProductBuild', CONVERT(NVARCHAR(255), SERVERPROPERTY('ProductBuild')) UNION ALL SELECT 'ProductBuildType', CONVERT(NVARCHAR(255), SERVERPROPERTY('ProductBuildType')) UNION ALL SELECT 'ProductLevel', CONVERT(NVARCHAR(255), SERVERPROPERTY('ProductLevel')) UNION ALL SELECT 'ProductMajorVersion', CONVERT(NVARCHAR(255), SERVERPROPERTY('ProductMajorVersion')) UNION ALL SELECT 'ProductMinorVersion', CONVERT(NVARCHAR(255), SERVERPROPERTY('ProductMinorVersion')) UNION ALL SELECT 'ProductUpdateLevel', CONVERT(NVARCHAR(255), SERVERPROPERTY('ProductUpdateLevel')) UNION ALL SELECT 'ProductUpdateReference', CONVERT(NVARCHAR(255), SERVERPROPERTY('ProductUpdateReference')) UNION ALL SELECT 'ProductVersion', CONVERT(NVARCHAR(255), SERVERPROPERTY('ProductVersion')) UNION ALL SELECT 'ResourceLastUpdateDateTime', LTRIM(RTRIM(REPLACE(CONVERT(NVARCHAR(255), SERVERPROPERTY('ResourceLastUpdateDateTime')),' ',' '))) UNION ALL SELECT 'ResourceVersion', CONVERT(NVARCHAR(255), SERVERPROPERTY('ResourceVersion')) UNION ALL SELECT 'ServerName', CONVERT(NVARCHAR(255), SERVERPROPERTY('ServerName')) UNION ALL SELECT 'SqlCharSet', CONVERT(NVARCHAR(255), SERVERPROPERTY('SqlCharSet')) UNION ALL SELECT 'SqlCharSetName', CONVERT(NVARCHAR(255), SERVERPROPERTY('SqlCharSetName')) UNION ALL SELECT 'SqlSortOrder', CONVERT(NVARCHAR(255), SERVERPROPERTY('SqlSortOrder')) UNION ALL SELECT 'SqlSortOrderName', CONVERT(NVARCHAR(255), SERVERPROPERTY('SqlSortOrderName')) UNION ALL SELECT 'FilestreamConfiguredLevel', CONVERT(NVARCHAR(255), SERVERPROPERTY('FilestreamConfiguredLevel')) UNION ALL SELECT 'FilestreamEffectiveLevel', CONVERT(NVARCHAR(255), SERVERPROPERTY('FilestreamEffectiveLevel')) UNION ALL SELECT 'FullVersion', SUBSTRING(REPLACE(REPLACE(CONVERT(NVARCHAR(254), @@version), CHAR(13), ' '), CHAR(10), ' '),1,254) UNION ALL SELECT 'LogicalCpuCount', CONVERT(varchar, cpu_count) from sys.dm_os_sys_info UNION ALL SELECT 'PhysicalCpuCount', CONVERT(varchar, (cpu_count/hyperthread_ratio)) from sys.dm_os_sys_info UNION ALL SELECT 'SqlServerStartTime', CONVERT(varchar, (sqlserver_start_time)) from sys.dm_os_sys_info UNION ALL SELECT 'IsTDS80Used', CASE WHEN conn_type.tds8_count > 0 THEN '1' ELSE '0' END FROM ( SELECT COUNT(*) as tds8_count from sys.dm_exec_connections WHERE sys.fn_varbintohexstr(protocol_version) like '0x8%' ) conn_type UNION ALL SELECT 'IsResourceGovernorEnabled', CASE WHEN gov_enabled.enabled_count > 0 THEN '1' ELSE '0' END FROM ( SELECT COUNT(*) as enabled_count from sys.resource_governor_configuration WHERE is_enabled = 1 ) gov_enabled; WITH BUFFER_POOL_SIZE AS ( SELECT (COUNT_BIG (*) * 8192) / 1024 / 1024 AS cached_pages_count, CASE database_id WHEN 32767 THEN 'ResourceDb' ELSE db_name (database_id) END AS database_name FROM sys.dm_os_buffer_descriptors GROUP BY DB_NAME (database_id), database_id) INSERT INTO #serverProperties SELECT 'total_buffer_size_in_mb', CAST(SUM(cached_pages_count) AS NVARCHAR (255)) FROM BUFFER_POOL_SIZE; /* Certain clouds do not allow access to certain tables so we need to catch the table does not exist error and default the setting */ IF @CLOUDTYPE = 'AZURE' BEGIN exec('INSERT INTO #serverProperties SELECT ''InstanceName'', CONVERT(NVARCHAR(255), COALESCE(SERVERPROPERTY(''InstanceName''),@@SERVERNAME))') BEGIN TRY exec('INSERT INTO #serverProperties SELECT ''BackupsToAzureBlobStorage'', CASE WHEN count(1) > 0 THEN ''1'' ELSE ''0'' END from msdb.dbo.backupmediafamily where physical_device_name like ''%blob.core.windows.net%''') END TRY BEGIN CATCH exec('INSERT INTO #serverProperties SELECT ''BackupsToAzureBlobStorage'', ''0''') END CATCH BEGIN TRY exec('INSERT INTO #serverProperties SELECT ''BackupsToObjectStorage'', CASE WHEN count(1) > 0 THEN ''1'' ELSE ''0'' END from msdb.dbo.backupmediafamily where (physical_device_name like ''%s3://%'') or (physical_device_name like ''%blob.core.windows.net%''') END TRY BEGIN CATCH exec('INSERT INTO #serverProperties SELECT ''BackupsToObjectStorage'', ''0''') END CATCH BEGIN TRY exec('INSERT INTO #serverProperties SELECT ''IsRpcOutEnabled'', CONVERT(NVARCHAR(255), is_rpc_out_enabled) FROM sys.servers WHERE name = @@SERVERNAME') END TRY BEGIN CATCH IF ERROR_NUMBER() = 208 AND ERROR_SEVERITY() = 16 AND ERROR_STATE() = 1 exec('INSERT INTO #serverProperties SELECT ''IsRpcOutEnabled'', ''0''') END CATCH BEGIN TRY exec('INSERT INTO #serverProperties SELECT ''IsRemoteProcTransactionPromotionEnabled'', CONVERT(NVARCHAR(255), is_remote_proc_transaction_promotion_enabled) FROM sys.servers WHERE name = @@SERVERNAME') END TRY BEGIN CATCH IF ERROR_NUMBER() = 208 AND ERROR_SEVERITY() = 16 AND ERROR_STATE() = 1 exec('INSERT INTO #serverProperties SELECT ''IsRemoteProcTransactionPromotionEnabled'', ''0''') END CATCH BEGIN TRY exec('INSERT INTO #serverProperties SELECT ''IsRemoteLoginEnabled'', CONVERT(NVARCHAR(255), is_remote_login_enabled) FROM sys.servers WHERE name = @@SERVERNAME') END TRY BEGIN CATCH IF ERROR_NUMBER() = 208 AND ERROR_SEVERITY() = 16 AND ERROR_STATE() = 1 exec('INSERT INTO #serverProperties SELECT ''IsRemoteLoginEnabled'', ''0''') END CATCH BEGIN TRY exec('INSERT INTO #serverProperties SELECT ''IsDTCInUse'', CONVERT(NVARCHAR(255), count(*)) from sys.availability_groups where dtc_support is not null /* SQL Server 2016 (13.x) and above */'); END TRY BEGIN CATCH IF ERROR_NUMBER() = 208 AND ERROR_SEVERITY() = 16 AND ERROR_STATE() = 1 exec('INSERT INTO #serverProperties SELECT ''IsDTCInUse'', ''0'' /* SQL Server 2016 (13.x) and above */'); END CATCH BEGIN TRY exec('INSERT INTO #serverProperties SELECT ''AvailabilityGroupCount'', count(*) FROM sys.availability_groups /* SQL Server 2012 (11.x) and above */') END TRY BEGIN CATCH IF ERROR_NUMBER() = 208 AND ERROR_SEVERITY() = 16 AND ERROR_STATE() = 1 exec('INSERT INTO #serverProperties SELECT ''AvailabilityGroupCount'', ''0'''); END CATCH exec('INSERT INTO #serverProperties SELECT ''HostPlatform'', ''Azure VM'''); exec('INSERT INTO #serverProperties SELECT ''HostDistribution'', ''Linux'''); exec('INSERT INTO #serverProperties SELECT ''HostRelease'', ''UNKNOWN'''); exec('INSERT INTO #serverProperties SELECT ''HostServicePackLevel'', ''UNKNOWN'''); exec('INSERT INTO #serverProperties SELECT ''HostOsLanguageVersion'', ''UNKNOWN'''); exec('INSERT INTO #serverProperties SELECT ''SQLServerMemoryUsedInMB'', CONVERT(NVARCHAR(255), committed_kb/1024) FROM sys.dm_os_sys_info'); exec('INSERT INTO #serverProperties SELECT ''SQLServerMemoryTargetInMB'', CONVERT(NVARCHAR(255), committed_target_kb/1024) FROM sys.dm_os_sys_info'); /* Derive total OS memory by choosing the max Target Node Memory for Azure SQL Database because regualr dm_os views are not available */ exec('INSERT INTO #serverProperties SELECT ''TotalOSMemoryMB'', max(cntr_value)/1024 from sys.dm_os_performance_counters where UPPER(object_name) like ''%MEMORY NODE%'' and counter_name = ''Target Node Memory (KB)''') exec('INSERT INTO #serverProperties SELECT ''TotalSQLServerCommittedMemoryMB'', CONVERT(NVARCHAR(255), committed_target_kb/1024) FROM sys.dm_os_sys_info') exec('INSERT INTO #serverProperties SELECT ''AvailableOSMemoryMB'', CONVERT(varchar, 0)') exec('INSERT INTO #serverProperties SELECT ''TotalMemoryInUseIncludingProcessesInMB'', CONVERT(NVARCHAR(255), committed_target_kb/1024) FROM sys.dm_os_sys_info') exec('INSERT INTO #serverProperties SELECT ''TotalLockedPageAllocInMB'', CONVERT(varchar, 0)') exec('INSERT INTO #serverProperties SELECT ''TotalUserVirtualMemoryInMB'', CONVERT(varchar, 0)') exec('INSERT INTO #serverProperties SELECT ''MaxConfiguredSQLServerMemoryMB'', CASE WHEN value = maximum THEN ''0'' ELSE CONVERT(varchar, (value)) END from sys.configurations where name = ''max server memory (MB)''') exec('INSERT INTO #serverProperties SELECT ''IpV4Address'', ''UNKNOWN''') exec('INSERT INTO #serverProperties SELECT TOP 1 ''IpV6Address'', ''UNKNOWN''') END IF @CLOUDTYPE = 'NONE' BEGIN exec('INSERT INTO #serverProperties SELECT ''InstanceName'', CONVERT(NVARCHAR(255), COALESCE(SERVERPROPERTY(''InstanceName''),@@ServiceName))') exec('INSERT INTO #serverProperties SELECT ''BackupsToAzureBlobStorage'', CASE WHEN count(1) > 0 THEN ''1'' ELSE ''0'' END from msdb.dbo.backupmediafamily where physical_device_name like ''%blob.core.windows.net%''') exec('INSERT INTO #serverProperties SELECT ''BackupsToObjectStorage'', CASE WHEN count(1) > 0 THEN ''1'' ELSE ''0'' END from msdb.dbo.backupmediafamily where (physical_device_name like ''%s3://%'') or (physical_device_name like ''%blob.core.windows.net%'')') exec('INSERT INTO #serverProperties SELECT ''IsRpcOutEnabled'', CONVERT(NVARCHAR(255), is_rpc_out_enabled) FROM sys.servers WHERE name = @@SERVERNAME') exec('INSERT INTO #serverProperties SELECT ''IsRemoteProcTransactionPromotionEnabled'', CONVERT(NVARCHAR(255), is_remote_proc_transaction_promotion_enabled) FROM sys.servers WHERE name = @@SERVERNAME') exec('INSERT INTO #serverProperties SELECT ''IsRemoteLoginEnabled'', CONVERT(NVARCHAR(255), is_remote_login_enabled) FROM sys.servers WHERE name = @@SERVERNAME') /* Query Memory usage at OS level */ exec('INSERT INTO #serverProperties SELECT ''TotalOSMemoryMB'', CONVERT(varchar, (total_physical_memory_kb/1024)) FROM sys.dm_os_sys_memory') exec('INSERT INTO #serverProperties SELECT ''AvailableOSMemoryMB'', CONVERT(varchar, (available_physical_memory_kb/1024)) FROM sys.dm_os_sys_memory') exec('INSERT INTO #serverProperties SELECT ''TotalMemoryInUseIncludingProcessesInMB'', CONVERT(varchar, (physical_memory_in_use_kb/1024)) FROM sys.dm_os_process_memory') exec('INSERT INTO #serverProperties SELECT ''TotalLockedPageAllocInMB'', CONVERT(varchar, (locked_page_allocations_kb/1024)) FROM sys.dm_os_process_memory') exec('INSERT INTO #serverProperties SELECT ''TotalUserVirtualMemoryInMB'', CONVERT(varchar, (total_virtual_address_space_kb/1024)) FROM sys.dm_os_process_memory') exec('INSERT INTO #serverProperties SELECT ''MaxConfiguredSQLServerMemoryMB'', CASE WHEN value = maximum THEN ''0'' ELSE CONVERT(varchar, (value)) END from sys.configurations where name = ''max server memory (MB)''') BEGIN TRY exec('WITH ip_address AS ( SELECT TOP 1 ''IpV4Address'' value_name, CONVERT(varchar(max), value_data) value_data FROM sys.dm_server_registry WHERE value_name IN (''IpAddress'') AND CONVERT(varchar, value_data) LIKE ''%.%.%.%'' AND CONVERT(varchar, value_data) NOT LIKE ''127.%.%.%'' AND CONVERT(varchar, value_data) NOT LIKE ''%::%'') INSERT INTO #serverProperties select value_name, REPLACE(value_data COLLATE SQL_Latin1_General_CP1_CI_AS, CHAR(0) ,'''') from ip_address'); END TRY BEGIN CATCH exec('INSERT INTO #serverProperties SELECT ''IpV4Address'', ''UNDETERMINED''') END CATCH BEGIN TRY exec('WITH ip_address AS ( SELECT TOP 1 ''IpV6Address'' value_name, CONVERT(varchar(max), value_data) value_data FROM sys.dm_server_registry WHERE value_name IN (''IpAddress'') AND CONVERT(varchar, value_data) NOT LIKE ''%.%.%.%'' AND CONVERT(varchar, value_data) NOT LIKE ''127.%.%.%'' AND CONVERT(varchar, value_data) NOT LIKE ''::1%'') INSERT INTO #serverProperties select value_name, REPLACE(value_data COLLATE SQL_Latin1_General_CP1_CI_AS, CHAR(0) ,'''') from ip_address'); END TRY BEGIN CATCH exec('INSERT INTO #serverProperties SELECT ''IpV6Address'', ''UNDETERMINED''') END CATCH IF @PRODUCT_VERSION >= 14 BEGIN exec('INSERT INTO #serverProperties SELECT ''HostPlatform'', SUBSTRING(CONVERT(NVARCHAR(255),host_platform),1,1024) FROM sys.dm_os_host_info /* SQL Server 2017 (14.x) and later */'); exec('INSERT INTO #serverProperties SELECT ''HostDistribution'', SUBSTRING(CONVERT(NVARCHAR(255),host_distribution),1,1024) FROM sys.dm_os_host_info /* SQL Server 2017 (14.x) and later */'); exec('INSERT INTO #serverProperties SELECT ''HostRelease'', SUBSTRING(CONVERT(NVARCHAR(255),host_release),1,1024) FROM sys.dm_os_host_info /* SQL Server 2017 (14.x) and later */'); exec('INSERT INTO #serverProperties SELECT ''HostServicePackLevel'', COALESCE(SUBSTRING(CONVERT(NVARCHAR(255),host_service_pack_level),1,1024), ''UNKNOWN'') FROM sys.dm_os_host_info /* SQL Server 2017 (14.x) and later */'); exec('INSERT INTO #serverProperties SELECT ''HostOsLanguageVersion'',SUBSTRING(CONVERT(NVARCHAR(255), os_language_version),1,1024) FROM sys.dm_os_host_info /* SQL Server 2017 (14.x) and later */'); END; IF @PRODUCT_VERSION >= 11 AND @PRODUCT_VERSION < 14 BEGIN exec('INSERT INTO #serverProperties SELECT ''HostPlatform'', ''Windows'' FROM sys.dm_os_windows_info /* SQL Server 2016 (13.x) and SQL Server 2012 (11.x) */'); exec('INSERT INTO #serverProperties SELECT ''HostRelease'', SUBSTRING(CONVERT(NVARCHAR(255),windows_release),1,1024) FROM sys.dm_os_windows_info /* SQL Server 2016 (13.x) and SQL Server 2012 (11.x) */'); exec('INSERT INTO #serverProperties SELECT ''HostServicePackLevel'', COALESCE(SUBSTRING(CONVERT(NVARCHAR(255),windows_service_pack_level),1,1024), ''UNKNOWN'') FROM sys.dm_os_windows_info /* SQL Server 2016 (13.x) and SQL Server 2012 (11.x) */'); exec('INSERT INTO #serverProperties SELECT ''HostOsLanguageVersion'',SUBSTRING(CONVERT(NVARCHAR(255), os_language_version),1,1024) FROM sys.dm_os_windows_info /* SQL Server 2016 (13.x) and SQL Server 2012 (11.x) */'); exec('INSERT INTO #serverProperties SELECT ''HostDistribution'', SUBSTRING(REPLACE(REPLACE(@@version, CHAR(13), '' ''), CHAR(10), '' ''),1,1024) /* SQL Server 2016 (13.x) and SQL Server 2012 (11.x) */'); END IF @PRODUCT_VERSION < 11 BEGIN /* Versions before SQL Server 2012 (11.x) */ /* Must Query a different column for committed memory in versions below 11.x */ exec('INSERT INTO #serverProperties SELECT ''TotalSQLServerCommittedMemoryMB'', CONVERT(NVARCHAR(255), bpool_committed/1024) FROM sys.dm_os_sys_info') exec('INSERT INTO #serverProperties SELECT ''HostPlatform'', ''Windows'''); exec('INSERT INTO #serverProperties SELECT ''HostRelease'', REPLACE(REPLACE(SUBSTRING(@@VERSION,4 + charindex ('' ON '',@@VERSION),LEN(@@VERSION)), CHAR(13), ''''), CHAR(10), '''')'); exec('INSERT INTO #serverProperties SELECT ''HostServicePackLevel'', COALESCE(SUBSTRING(CONVERT(NVARCHAR(255),SERVERPROPERTY(''ProductLevel'')),1,1024), ''UNKNOWN'') '); exec('INSERT INTO #serverProperties SELECT ''HostOsLanguageVersion'',''UNKNOWN'''); exec('INSERT INTO #serverProperties SELECT ''HostDistribution'', SUBSTRING(REPLACE(REPLACE(@@version, CHAR(13), '' ''), CHAR(10), '' ''),1,1024)'); exec('INSERT INTO #serverProperties SELECT ''SQLServerMemoryUsedInMB'', CONVERT(NVARCHAR(255), 0) /* Parameter defaulted because its not avaliable in this version */'); exec('INSERT INTO #serverProperties SELECT ''SQLServerMemoryTargetInMB'', CONVERT(NVARCHAR(255), 0) /* Parameter defaulted because its not avaliable in this version */'); END; IF @PRODUCT_VERSION >= 13 BEGIN exec('INSERT INTO #serverProperties SELECT ''IsDTCInUse'', CONVERT(NVARCHAR(255), count(*)) from sys.availability_groups where dtc_support is not null /* SQL Server 2016 (13.x) and above */'); END; ELSE BEGIN exec('INSERT INTO #serverProperties SELECT ''IsDTCInUse'', ''0'' /* SQL Server 2016 (13.x) and above */'); END; IF @PRODUCT_VERSION >= 11 BEGIN exec('INSERT INTO #serverProperties SELECT ''SQLServerMemoryUsedInMB'', CONVERT(NVARCHAR(255), committed_kb/1024) FROM sys.dm_os_sys_info /* SQL Server 2012 (11.x) above */'); exec('INSERT INTO #serverProperties SELECT ''SQLServerMemoryTargetInMB'', CONVERT(NVARCHAR(255), committed_target_kb/1024) FROM sys.dm_os_sys_info /* SQL Server 2012 (11.x) above */'); /* Must Query a different column for committed memory in versions above 10.x */ exec('INSERT INTO #serverProperties SELECT ''TotalSQLServerCommittedMemoryMB'', CONVERT(NVARCHAR(255), committed_target_kb/1024) FROM sys.dm_os_sys_info') exec('INSERT INTO #serverProperties SELECT ''AvailabilityGroupCount'', count(*) FROM sys.availability_groups /* SQL Server 2012 (11.x) and above */') END; END; SELECT '"' + @PKEY + '"' as PKEY, '"' + a.property_name + '"' as property_name , '"' + CONVERT(NVARCHAR(255), a.property_value) + '"' as property_value, '"' + @DMA_SOURCE_ID + '"' as dma_source_id, '"' + @DMA_MANUAL_ID + '"' as dma_manual_id FROM #serverProperties a; IF OBJECT_ID('tempdb..#serverProperties') IS NOT NULL DROP TABLE #serverProperties; IF OBJECT_ID('tempdb..#myPerms') IS NOT NULL DROP TABLE #myPerms;