diff --git a/DBADash/DBADashConnection.cs b/DBADash/DBADashConnection.cs index a68aca1b..1cfa32b5 100644 --- a/DBADash/DBADashConnection.cs +++ b/DBADash/DBADashConnection.cs @@ -13,7 +13,7 @@ public class DBADashConnection { private List supportedEngineEditions = new List { 1, 2, 3, 4, 5, 8 }; // Personal, Standard, Enterprise, Express, Azure DB, Azure MI - private List supportedProductVersions = new List { 9, 10, 11, 12, 13, 14, 15 }; // SQL 2005 to 2019 & Azure + private List supportedProductVersions = new List { 9, 10, 11, 12, 13, 14, 15, 16 }; // SQL 2005 to 2022 & Azure public enum ConnectionType { diff --git a/DBADashDB/Script.PostDeployment1.sql b/DBADashDB/Script.PostDeployment1.sql index 5cd81599..6d243044 100644 --- a/DBADashDB/Script.PostDeployment1.sql +++ b/DBADashDB/Script.PostDeployment1.sql @@ -15,99 +15,122 @@ GRANT EXECUTE ON SCHEMA::dbo TO [App]; GRANT SELECT ON SCHEMA::dbo TO [Reports] GRANT EXECUTE ON SCHEMA::[Report] TO [Reports]; /************/ -IF NOT EXISTS(SELECT 1 FROM dbo.SysConfigOptions) -BEGIN -INSERT INTO dbo.SysConfigOptions -( - configuration_id, - name, - description, - is_dynamic, - is_advanced, - default_value, - minimum, - maximum -) -VALUES -( 101, N'recovery interval (min)', N'Maximum recovery interval in minutes', 1, 1, 0, 0, 32767 ), -( 102, N'allow updates', N'Allow updates to system tables', 1, 0, 0, 0, 1 ), -( 103, N'user connections', N'Number of user connections allowed', 0, 1, 0, 0, 32767 ), -( 106, N'locks', N'Number of locks for all users', 0, 1, 0, 5000, 2147483647 ), -( 107, N'open objects', N'Number of open database objects', 0, 1, 0, 0, 2147483647 ), -( 109, N'fill factor (%)', N'Default fill factor percentage', 0, 1, 0, 0, 100 ), -( 114, N'disallow results from triggers', N'Disallow returning results from triggers', 1, 1, 0, 0, 1 ), -( 115, N'nested triggers', N'Allow triggers to be invoked within triggers', 1, 0, 1, 0, 1 ), -( 116, N'server trigger recursion', N'Allow recursion for server level triggers', 1, 0, 1, 0, 1 ), -( 117, N'remote access', N'Allow remote access', 0, 0, 1, 0, 1 ), -( 124, N'default language', N'default language', 1, 0, 0, 0, 9999 ), -( 400, N'cross db ownership chaining', N'Allow cross db ownership chaining', 1, 0, 0, 0, 1 ), -( 503, N'max worker threads', N'Maximum worker threads', 1, 1, 0, 128, 65535 ), -( 505, N'network packet size (B)', N'Network packet size', 1, 1, 4096, 512, 32767 ), -( 518, N'show advanced options', N'show advanced options', 1, 0, N'0', 0, 1 ), -( 542, N'remote proc trans', N'Create DTC transaction for remote procedures', 1, 0, 0, 0, 1 ), -( 544, N'c2 audit mode', N'c2 audit mode', 0, 1, 0, 0, 1 ), -( 1126, N'default full-text language', N'default full-text language', 1, 1, 1033, 0, 2147483647 ), -( 1127, N'two digit year cutoff', N'two digit year cutoff', 1, 1, 2049, 1753, 9999 ), -( 1505, N'index create memory (KB)', N'Memory for index create sorts (kBytes)', 1, 1, 0, 704, 2147483647 ), -( 1517, N'priority boost', N'Priority boost', 0, 1, 0, 0, 1 ), -( 1519, N'remote login timeout (s)', N'remote login timeout', 1, 0, 10, 0, 2147483647 ), -( 1520, N'remote query timeout (s)', N'remote query timeout', 1, 0, 600, 0, 2147483647 ), -( 1531, N'cursor threshold', N'cursor threshold', 1, 1, -1, -1, 2147483647 ), -( 1532, N'set working set size', N'set working set size', 0, 1, 0, 0, 1 ), -( 1534, N'user options', N'user options', 1, 0, 0, 0, 32767 ), -( 1535, N'affinity mask', N'affinity mask', 1, 1, 0, -2147483648, 2147483647 ), -( 1536, N'max text repl size (B)', N'Maximum size of a text field in replication.', 1, 0, 65536, -1, 2147483647 ), -( 1537, N'media retention', N'Tape retention period in days', 1, 1, 0, 0, 365 ), -( 1538, N'cost threshold for parallelism', N'cost threshold for parallelism', 1, 1, 5, 0, 32767 ), -( 1539, N'max degree of parallelism', N'maximum degree of parallelism', 1, 1, 0, 0, 32767 ), -( 1540, N'min memory per query (KB)', N'minimum memory per query (kBytes)', 1, 1, 1024, 512, 2147483647 ), -( 1541, N'query wait (s)', N'maximum time to wait for query memory (s)', 1, 1, -1, -1, 2147483647 ), -( 1543, N'min server memory (MB)', N'Minimum size of server memory (MB)', 1, 1, 0, 0, 2147483647 ), -( 1544, N'max server memory (MB)', N'Maximum size of server memory (MB)', 1, 1, N'2147483647', 128, 2147483647 ), -( 1545, N'query governor cost limit', N'Maximum estimated cost allowed by query governor', 1, 1, 0, 0, 2147483647 ), -( 1546, N'lightweight pooling', N'User mode scheduler uses lightweight pooling', 0, 1, 0, 0, 1 ), -( 1547, N'scan for startup procs', N'scan for startup stored procedures', 0, 1, 0, 0, 1 ), -( 1549, N'affinity64 mask', N'affinity64 mask', 1, 1, 0, -2147483648, 2147483647 ), -( 1550, N'affinity I/O mask', N'affinity I/O mask', 0, 1, 0, -2147483648, 2147483647 ), -( 1551, N'affinity64 I/O mask', N'affinity64 I/O mask', 0, 1, 0, -2147483648, 2147483647 ), -( 1555, N'transform noise words', N'Transform noise words for full-text query', 1, 1, 0, 0, 1 ), -( 1556, N'precompute rank', N'Use precomputed rank for full-text query', 1, 1, 0, 0, 1 ), -( 1557, N'PH timeout (s)', N'DB connection timeout for full-text protocol handler (s)', 1, 1, 60, 1, 3600 ), -( 1562, N'clr enabled', N'CLR user code execution enabled in the server', 1, 0, N'0', 0, 1 ), -( 1563, N'max full-text crawl range', N'Maximum crawl ranges allowed in full-text indexing', 1, 1, 4, 0, 256 ), -( 1564, N'ft notify bandwidth (min)', N'Number of reserved full-text notifications buffers', 1, 1, 0, 0, 32767 ), -( 1565, N'ft notify bandwidth (max)', N'Max number of full-text notifications buffers', 1, 1, 100, 0, 32767 ), -( 1566, N'ft crawl bandwidth (min)', N'Number of reserved full-text crawl buffers', 1, 1, 0, 0, 32767 ), -( 1567, N'ft crawl bandwidth (max)', N'Max number of full-text crawl buffers', 1, 1, 100, 0, 32767 ), -( 1568, N'default trace enabled', N'Enable or disable the default trace', 1, 1, 1, 0, 1 ), -( 1569, N'blocked process threshold (s)', N'Blocked process reporting threshold', 1, 1, 0, 0, 86400 ), -( 1570, N'in-doubt xact resolution', N'Recovery policy for DTC transactions with unknown outcome', 1, 1, 0, 0, 2 ), -( 1576, N'remote admin connections', N'Dedicated Admin Connections are allowed from remote clients', 1, 0, 0, 0, 1 ), -( 1577, N'common criteria compliance enabled', N'Common Criteria compliance mode enabled', 0, 1, 0, 0, 1 ), -( 1578, N'EKM provider enabled', N'Enable or disable EKM provider', 1, 1, 0, 0, 1 ), -( 1579, N'backup compression default', N'Enable compression of backups by default', 1, 0, 0, 0, 1 ), -( 1580, N'filestream access level', N'Sets the FILESTREAM access level', 1, 0, N'0', 0, 2 ), -( 1581, N'optimize for ad hoc workloads', N'When this option is set, plan cache size is further reduced for single-use adhoc OLTP workload.', 1, 1, 0, 0, 1 ), -( 1582, N'access check cache bucket count', N'Default hash bucket count for the access check result security cache', 1, 1, 0, 0, 65536 ), -( 1583, N'access check cache quota', N'Default quota for the access check result security cache', 1, 1, 0, 0, 2147483647 ), -( 1584, N'backup checksum default', N'Enable checksum of backups by default', 1, 0, 0, 0, 1 ), -( 1585, N'automatic soft-NUMA disabled', N'Automatic soft-NUMA is enabled by default', 0, 1, 0, 0, 1 ), -( 1586, N'external scripts enabled', N'Allows execution of external scripts', 0, 0, 0, 0, 1 ), -( 1587, N'clr strict security', N'CLR strict security enabled in the server', 1, 1, null, 0, 1 ), -( 16384, N'Agent XPs', N'Enable or disable Agent XPs', 1, 1, 1, 0, 1 ), -( 16386, N'Database Mail XPs', N'Enable or disable Database Mail XPs', 1, 1, N'0', 0, 1 ), -( 16387, N'SMO and DMO XPs', N'Enable or disable SMO and DMO XPs', 1, 1, 1, 0, 1 ), -( 16388, N'Ole Automation Procedures', N'Enable or disable Ole Automation Procedures', 1, 1, 0, 0, 1 ), -( 16390, N'xp_cmdshell', N'Enable or disable command shell', 1, 1, 0, 0, N'0' ), -( 16391, N'Ad Hoc Distributed Queries', N'Enable or disable Ad Hoc Distributed Queries', 1, 1, 0, 0, 1 ), -( 16392, N'Replication XPs', N'Enable or disable Replication XPs', 1, 1, 0, 0, 1 ), -( 16393, N'contained database authentication', N'Enables contained databases and contained authentication', 1, 0, 0, 0, 1 ), -( 16394, N'hadoop connectivity', N'Configure SQL Server to connect to external Hadoop or Microsoft Azure storage blob data sources through PolyBase', 0, 0, 0, 0, 7 ), -( 16395, N'polybase network encryption', N'Configure SQL Server to encrypt control and data channels when using PolyBase', 0, 0, 1, 0, 1 ), -( 16396, N'remote data archive', N'Allow the use of the REMOTE_DATA_ARCHIVE data access for databases', 1, 0, 0, 0, 1 ), -( 16397, N'allow polybase export', N'Allow INSERT into a Hadoop external table', 1, 0, 0, 0, 1 ) - -END +MERGE INTO [dbo].[SysConfigOptions] AS [Target] +USING (VALUES + (101,N'recovery interval (min)',N'Maximum recovery interval in minutes',1,1,0,0,32767) + ,(102,N'allow updates',N'Allow updates to system tables',1,0,0,0,1) + ,(103,N'user connections',N'Number of user connections allowed',0,1,0,0,32767) + ,(106,N'locks',N'Number of locks for all users',0,1,0,5000,2147483647) + ,(107,N'open objects',N'Number of open database objects',0,1,0,0,2147483647) + ,(109,N'fill factor (%)',N'Default fill factor percentage',0,1,0,0,100) + ,(114,N'disallow results from triggers',N'Disallow returning results from triggers',1,1,0,0,1) + ,(115,N'nested triggers',N'Allow triggers to be invoked within triggers',1,0,1,0,1) + ,(116,N'server trigger recursion',N'Allow recursion for server level triggers',1,0,1,0,1) + ,(117,N'remote access',N'Allow remote access',0,0,1,0,1) + ,(124,N'default language',N'default language',1,0,0,0,9999) + ,(400,N'cross db ownership chaining',N'Allow cross db ownership chaining',1,0,0,0,1) + ,(503,N'max worker threads',N'Maximum worker threads',1,1,0,128,65535) + ,(505,N'network packet size (B)',N'Network packet size',1,1,4096,512,32767) + ,(518,N'show advanced options',N'show advanced options',1,0,0,0,1) + ,(542,N'remote proc trans',N'Create DTC transaction for remote procedures',1,0,0,0,1) + ,(544,N'c2 audit mode',N'c2 audit mode',0,1,0,0,1) + ,(1126,N'default full-text language',N'default full-text language',1,1,1033,0,2147483647) + ,(1127,N'two digit year cutoff',N'two digit year cutoff',1,1,2049,1753,9999) + ,(1505,N'index create memory (KB)',N'Memory for index create sorts (kBytes)',1,1,0,704,2147483647) + ,(1517,N'priority boost',N'Priority boost',0,1,0,0,1) + ,(1519,N'remote login timeout (s)',N'remote login timeout',1,0,10,0,2147483647) + ,(1520,N'remote query timeout (s)',N'remote query timeout',1,0,600,0,2147483647) + ,(1531,N'cursor threshold',N'cursor threshold',1,1,-1,-1,2147483647) + ,(1532,N'set working set size',N'set working set size',0,1,0,0,1) + ,(1534,N'user options',N'user options',1,0,0,0,32767) + ,(1535,N'affinity mask',N'affinity mask',1,1,0,-2147483648,2147483647) + ,(1536,N'max text repl size (B)',N'Maximum size of a text field in replication.',1,0,65536,-1,2147483647) + ,(1537,N'media retention',N'Tape retention period in days',1,1,0,0,365) + ,(1538,N'cost threshold for parallelism',N'cost threshold for parallelism',1,1,5,0,32767) + ,(1539,N'max degree of parallelism',N'maximum degree of parallelism',1,1,0,0,32767) + ,(1540,N'min memory per query (KB)',N'minimum memory per query (kBytes)',1,1,1024,512,2147483647) + ,(1541,N'query wait (s)',N'maximum time to wait for query memory (s)',1,1,-1,-1,2147483647) + ,(1543,N'min server memory (MB)',N'Minimum size of server memory (MB)',1,1,0,0,2147483647) + ,(1544,N'max server memory (MB)',N'Maximum size of server memory (MB)',1,1,2147483647,128,2147483647) + ,(1545,N'query governor cost limit',N'Maximum estimated cost allowed by query governor',1,1,0,0,2147483647) + ,(1546,N'lightweight pooling',N'User mode scheduler uses lightweight pooling',0,1,0,0,1) + ,(1547,N'scan for startup procs',N'scan for startup stored procedures',0,1,0,0,1) + ,(1549,N'affinity64 mask',N'affinity64 mask',1,1,0,-2147483648,2147483647) + ,(1550,N'affinity I/O mask',N'affinity I/O mask',0,1,0,-2147483648,2147483647) + ,(1551,N'affinity64 I/O mask',N'affinity64 I/O mask',0,1,0,-2147483648,2147483647) + ,(1555,N'transform noise words',N'Transform noise words for full-text query',1,1,0,0,1) + ,(1556,N'precompute rank',N'Use precomputed rank for full-text query',1,1,0,0,1) + ,(1557,N'PH timeout (s)',N'DB connection timeout for full-text protocol handler (s)',1,1,60,1,3600) + ,(1562,N'clr enabled',N'CLR user code execution enabled in the server',1,0,0,0,1) + ,(1563,N'max full-text crawl range',N'Maximum crawl ranges allowed in full-text indexing',1,1,4,0,256) + ,(1564,N'ft notify bandwidth (min)',N'Number of reserved full-text notifications buffers',1,1,0,0,32767) + ,(1565,N'ft notify bandwidth (max)',N'Max number of full-text notifications buffers',1,1,100,0,32767) + ,(1566,N'ft crawl bandwidth (min)',N'Number of reserved full-text crawl buffers',1,1,0,0,32767) + ,(1567,N'ft crawl bandwidth (max)',N'Max number of full-text crawl buffers',1,1,100,0,32767) + ,(1568,N'default trace enabled',N'Enable or disable the default trace',1,1,1,0,1) + ,(1569,N'blocked process threshold (s)',N'Blocked process reporting threshold',1,1,0,0,86400) + ,(1570,N'in-doubt xact resolution',N'Recovery policy for DTC transactions with unknown outcome',1,1,0,0,2) + ,(1576,N'remote admin connections',N'Dedicated Admin Connections are allowed from remote clients',1,0,0,0,1) + ,(1577,N'common criteria compliance enabled',N'Common Criteria compliance mode enabled',0,1,0,0,1) + ,(1578,N'EKM provider enabled',N'Enable or disable EKM provider',1,1,0,0,1) + ,(1579,N'backup compression default',N'Enable compression of backups by default',1,0,0,0,1) + ,(1580,N'filestream access level',N'Sets the FILESTREAM access level',1,0,0,0,2) + ,(1581,N'optimize for ad hoc workloads',N'When this option is set, plan cache size is further reduced for single-use adhoc OLTP workload.',1,1,0,0,1) + ,(1582,N'access check cache bucket count',N'Default hash bucket count for the access check result security cache',1,1,0,0,65536) + ,(1583,N'access check cache quota',N'Default quota for the access check result security cache',1,1,0,0,2147483647) + ,(1584,N'backup checksum default',N'Enable checksum of backups by default',1,0,0,0,1) + ,(1585,N'automatic soft-NUMA disabled',N'Automatic soft-NUMA is enabled by default',0,1,0,0,1) + ,(1586,N'external scripts enabled',N'Allows execution of external scripts',0,0,0,0,1) + ,(1587,N'clr strict security',N'CLR strict security enabled in the server',1,1,NULL,0,1) + ,(1588,N'column encryption enclave type',N'Type of enclave used for computations on encrypted columns',0,0,0,0,2) + ,(1589,N'tempdb metadata memory-optimized',N'Tempdb metadata memory-optimized is disabled by default.',0,1,0,0,1) + ,(1591,N'ADR cleaner retry timeout (min)',N'ADR cleaner retry timeout.',1,1,15,0,32767) + ,(1592,N'ADR Preallocation Factor',N'ADR Preallocation Factor.',1,1,4,0,32767) + ,(1593,N'version high part of SQL Server',N'version high part of SQL Server that model database copied for',1,1,1048576,-2147483648,2147483647) + ,(1594,N'version low part of SQL Server',N'version low part of SQL Server that model database copied for',1,1,39321609,-2147483648,2147483647) + ,(1595,N'Data processed daily limit in TB',N'SQL On-demand data processed daily limit in TB',1,0,2147483647,0,2147483647) + ,(1596,N'Data processed weekly limit in TB',N'SQL On-demand data processed weekly limit in TB',1,0,2147483647,0,2147483647) + ,(1597,N'Data processed monthly limit in TB',N'SQL On-demand data processed monthly limit in TB',1,0,2147483647,0,2147483647) + ,(1598,N'ADR Cleaner Thread Count',N'Max number of threads ADR cleaner can assign.',1,1,1,1,32767) + ,(1599,N'backup compression algorithm',N'Configure backup compression algorithm',1,0,0,0,2) + ,(1600,N'hardware offload config',N'Offload processing to specialized hardware',0,1,0,0,255) + ,(16384,N'Agent XPs',N'Enable or disable Agent XPs',1,1,1,0,1) + ,(16386,N'Database Mail XPs',N'Enable or disable Database Mail XPs',1,1,0,0,1) + ,(16387,N'SMO and DMO XPs',N'Enable or disable SMO and DMO XPs',1,1,1,0,1) + ,(16388,N'Ole Automation Procedures',N'Enable or disable Ole Automation Procedures',1,1,0,0,1) + ,(16390,N'xp_cmdshell',N'Enable or disable command shell',1,1,0,0,0) + ,(16391,N'Ad Hoc Distributed Queries',N'Enable or disable Ad Hoc Distributed Queries',1,1,0,0,1) + ,(16392,N'Replication XPs',N'Enable or disable Replication XPs',1,1,0,0,1) + ,(16393,N'contained database authentication',N'Enables contained databases and contained authentication',1,0,0,0,1) + ,(16394,N'hadoop connectivity',N'Configure SQL Server to connect to external Hadoop or Microsoft Azure storage blob data sources through PolyBase',0,0,0,0,7) + ,(16395,N'polybase network encryption',N'Configure SQL Server to encrypt control and data channels when using PolyBase',0,0,1,0,1) + ,(16396,N'remote data archive',N'Allow the use of the REMOTE_DATA_ARCHIVE data access for databases',1,0,0,0,1) + ,(16397,N'allow polybase export',N'Allow INSERT into a Hadoop external table',1,0,0,0,1) + ,(16398,N'allow filesystem enumeration',N'Allow enumeration of filesystem',1,1,1,0,1) + ,(16399,N'polybase enabled',N'Configure SQL Server to connect to external data sources through PolyBase',1,0,0,0,1) + ,(16400,N'suppress recovery model errors',N'Return warning instead of error for unsupported ALTER DATABASE SET RECOVERY command',1,1,0,0,1) + ,(16401,N'openrowset auto_create_statistics',N'Enable or disable auto create statistics for openrowset sources.',1,1,1,0,1) +) AS [Source] ([configuration_id],[name],[description],[is_dynamic],[is_advanced],[default_value],[minimum],[maximum]) +ON ([Target].[configuration_id] = [Source].[configuration_id]) +WHEN MATCHED AND ( + NULLIF([Source].[name], [Target].[name]) IS NOT NULL OR NULLIF([Target].[name], [Source].[name]) IS NOT NULL OR + NULLIF([Source].[description], [Target].[description]) IS NOT NULL OR NULLIF([Target].[description], [Source].[description]) IS NOT NULL OR + NULLIF([Source].[is_dynamic], [Target].[is_dynamic]) IS NOT NULL OR NULLIF([Target].[is_dynamic], [Source].[is_dynamic]) IS NOT NULL OR + NULLIF([Source].[is_advanced], [Target].[is_advanced]) IS NOT NULL OR NULLIF([Target].[is_advanced], [Source].[is_advanced]) IS NOT NULL OR + NULLIF([Source].[default_value], [Target].[default_value]) IS NOT NULL OR NULLIF([Target].[default_value], [Source].[default_value]) IS NOT NULL OR + NULLIF([Source].[minimum], [Target].[minimum]) IS NOT NULL OR NULLIF([Target].[minimum], [Source].[minimum]) IS NOT NULL OR + NULLIF([Source].[maximum], [Target].[maximum]) IS NOT NULL OR NULLIF([Target].[maximum], [Source].[maximum]) IS NOT NULL) THEN + UPDATE SET + [Target].[name] = [Source].[name], + [Target].[description] = [Source].[description], + [Target].[is_dynamic] = [Source].[is_dynamic], + [Target].[is_advanced] = [Source].[is_advanced], + [Target].[default_value] = [Source].[default_value], + [Target].[minimum] = [Source].[minimum], + [Target].[maximum] = [Source].[maximum] +WHEN NOT MATCHED BY TARGET THEN + INSERT([configuration_id],[name],[description],[is_dynamic],[is_advanced],[default_value],[minimum],[maximum]) + VALUES([Source].[configuration_id],[Source].[name],[Source].[description],[Source].[is_dynamic],[Source].[is_advanced],[Source].[default_value],[Source].[minimum],[Source].[maximum]); -- Wait descriptions from https://docs.microsoft.com/en-us/sql/relational-databases/system-dynamic-management-views/sys-dm-os-wait-stats-transact-sql?view=sql-server-ver15 MERGE INTO dbo.WaitType AS [Target] @@ -1385,7 +1408,13 @@ USING (VALUES ,(25,N'PAUSED_RESUMABLE_INDEX_ABORT_DURATION_MINUTES',N'1440') ,(26,N'DW_COMPATIBILITY_LEVEL',N'0') ,(27,N'EXEC_QUERY_STATS_FOR_SCALAR_FUNCTIONS',N'1') + ,(28,N'PARAMETER_SENSITIVE_PLAN_OPTIMIZATION',N'1') ,(29,N'ASYNC_STATS_UPDATE_WAIT_AT_LOW_PRIORITY',N'0') + ,(31,N'CE_FEEDBACK', N'1' ) + ,(33,N'MEMORY_GRANT_FEEDBACK_PERSISTENCE', N'1' ) + ,(34,N'MEMORY_GRANT_FEEDBACK_PERCENTILE_GRANT', N'1' ) + ,(35,N'OPTIMIZED_PLAN_FORCING', N'0' ) + ,(37,N'DOP_FEEDBACK', N'0' ) ) AS [Source] ([configuration_id],[name],[default_value]) ON ([Target].[configuration_id] = [Source].[configuration_id]) WHEN MATCHED AND ( diff --git a/DBADashDB/dbo/Functions/SQLVersionName.sql b/DBADashDB/dbo/Functions/SQLVersionName.sql index 712e6d41..e0cbce7e 100644 --- a/DBADashDB/dbo/Functions/SQLVersionName.sql +++ b/DBADashDB/dbo/Functions/SQLVersionName.sql @@ -11,4 +11,5 @@ SELECT CASE WHEN @EditionID = 1674378470 AND @ProductVersion LIKE '%.%' THEN 'A WHEN @ProductVersion LIKE '13.%' THEN 'SQL 2016' WHEN @ProductVersion LIKE '14.%' THEN 'SQL 2017' WHEN @ProductVersion LIKE '15.%' THEN 'SQL 2019' + WHEN @ProductVersion LIKE '16.%' THEN 'SQL 2022' ELSE @ProductVersion END AS SQLVersionName \ No newline at end of file