Skip to content

Commit

Permalink
SQL 2022 Support
Browse files Browse the repository at this point in the history
Add version 16 (2022) to supported list
Update SQLVersionName function for SQL 2022
Update system config options with new options
Update DB config options with new options
#206
  • Loading branch information
DavidWiseman committed May 27, 2022
1 parent 7c54cc3 commit 2cbe38a
Show file tree
Hide file tree
Showing 3 changed files with 124 additions and 94 deletions.
2 changes: 1 addition & 1 deletion DBADash/DBADashConnection.cs
Expand Up @@ -13,7 +13,7 @@ public class DBADashConnection
{

private List<int> supportedEngineEditions = new List<int> { 1, 2, 3, 4, 5, 8 }; // Personal, Standard, Enterprise, Express, Azure DB, Azure MI
private List<int> supportedProductVersions = new List<int> { 9, 10, 11, 12, 13, 14, 15 }; // SQL 2005 to 2019 & Azure
private List<int> supportedProductVersions = new List<int> { 9, 10, 11, 12, 13, 14, 15, 16 }; // SQL 2005 to 2022 & Azure

public enum ConnectionType
{
Expand Down
215 changes: 122 additions & 93 deletions DBADashDB/Script.PostDeployment1.sql
Expand Up @@ -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]
Expand Down Expand Up @@ -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 (
Expand Down
1 change: 1 addition & 0 deletions DBADashDB/dbo/Functions/SQLVersionName.sql
Expand Up @@ -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

0 comments on commit 2cbe38a

Please sign in to comment.