From 20bad9c6fed588064cf8a1a21a421674be57e288 Mon Sep 17 00:00:00 2001 From: Jake Morgan Date: Thu, 26 Mar 2026 13:49:04 +0000 Subject: [PATCH 1/3] Widen installation_history sql_server_version column Increase sql_server_version and sql_server_edition to nvarchar(512) to prevent truncation of long SQL Server version strings. --- Installer.Tests/Helpers/TestDatabaseHelper.cs | 4 +- install/01_install_database.sql | 30 ++++++++++- ...nstallation_history_sql_server_version.sql | 54 +++++++++++++++++++ upgrades/2.4.0-to-2.5.0/upgrade.txt | 1 + 4 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 upgrades/2.4.0-to-2.5.0/01_widen_installation_history_sql_server_version.sql create mode 100644 upgrades/2.4.0-to-2.5.0/upgrade.txt diff --git a/Installer.Tests/Helpers/TestDatabaseHelper.cs b/Installer.Tests/Helpers/TestDatabaseHelper.cs index 8f5b9f6c..12ef5a46 100644 --- a/Installer.Tests/Helpers/TestDatabaseHelper.cs +++ b/Installer.Tests/Helpers/TestDatabaseHelper.cs @@ -66,7 +66,7 @@ CREATE TABLE config.installation_history installation_date datetime2(7) NOT NULL DEFAULT SYSDATETIME(), installer_version nvarchar(50) NOT NULL, installer_info_version nvarchar(100) NULL, - sql_server_version nvarchar(255) NOT NULL DEFAULT N'Unknown', + sql_server_version nvarchar(512) NOT NULL DEFAULT N'Unknown', sql_server_edition nvarchar(255) NOT NULL DEFAULT N'Unknown', installation_type nvarchar(20) NOT NULL DEFAULT N'UPGRADE', previous_version nvarchar(50) NULL, @@ -108,7 +108,7 @@ CREATE TABLE config.installation_history installation_date datetime2(7) NOT NULL DEFAULT SYSDATETIME(), installer_version nvarchar(50) NOT NULL, installer_info_version nvarchar(100) NULL, - sql_server_version nvarchar(255) NOT NULL DEFAULT N'Unknown', + sql_server_version nvarchar(512) NOT NULL DEFAULT N'Unknown', sql_server_edition nvarchar(255) NOT NULL DEFAULT N'Unknown', installation_type nvarchar(20) NOT NULL DEFAULT N'UPGRADE', previous_version nvarchar(50) NULL, diff --git a/install/01_install_database.sql b/install/01_install_database.sql index 2d718205..8a9bddb3 100644 --- a/install/01_install_database.sql +++ b/install/01_install_database.sql @@ -620,7 +620,7 @@ BEGIN installation_date datetime2(7) NOT NULL DEFAULT SYSDATETIME(), installer_version nvarchar(50) NOT NULL, installer_info_version nvarchar(100) NULL, - sql_server_version nvarchar(255) NOT NULL, + sql_server_version nvarchar(512) NOT NULL, sql_server_edition nvarchar(255) NOT NULL, installation_type nvarchar(20) NOT NULL, /*INSTALL, UPGRADE, REINSTALL*/ previous_version nvarchar(50) NULL, @@ -641,6 +641,34 @@ BEGIN END; GO +/* +Widen sql_server_version when upgrading from older installs (nvarchar(255) or narrower). +Idempotent: no-op if the column is already nvarchar(512) or wider, missing, or table absent. +*/ +IF OBJECT_ID(N'config.installation_history', N'U') IS NOT NULL +BEGIN + IF EXISTS + ( + SELECT + 1 + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_SCHEMA = N'config' + AND TABLE_NAME = N'installation_history' + AND COLUMN_NAME = N'sql_server_version' + AND DATA_TYPE = N'nvarchar' + AND CHARACTER_MAXIMUM_LENGTH BETWEEN 1 AND 511 + ) + BEGIN + ALTER TABLE + config.installation_history + ALTER COLUMN + sql_server_version nvarchar(512) NOT NULL; + + PRINT 'Widened config.installation_history.sql_server_version to nvarchar(512).'; + END; +END; +GO + /* Create view to show current installed version */ diff --git a/upgrades/2.4.0-to-2.5.0/01_widen_installation_history_sql_server_version.sql b/upgrades/2.4.0-to-2.5.0/01_widen_installation_history_sql_server_version.sql new file mode 100644 index 00000000..b10a2452 --- /dev/null +++ b/upgrades/2.4.0-to-2.5.0/01_widen_installation_history_sql_server_version.sql @@ -0,0 +1,54 @@ +/* +Copyright 2026 Darling Data, LLC +https://www.erikdarling.com/ + +Upgrade from 2.4.0 to 2.5.0 +Widen config.installation_history.sql_server_version from nvarchar(255) to nvarchar(512). +Idempotent: safe to run multiple times. +*/ + +SET ANSI_NULLS ON; +SET ANSI_PADDING ON; +SET ANSI_WARNINGS ON; +SET ARITHABORT ON; +SET CONCAT_NULL_YIELDS_NULL ON; +SET QUOTED_IDENTIFIER ON; +SET NUMERIC_ROUNDABORT OFF; +SET IMPLICIT_TRANSACTIONS OFF; +SET STATISTICS TIME, IO OFF; +GO + +USE PerformanceMonitor; +GO + +IF OBJECT_ID(N'config.installation_history', N'U') IS NOT NULL +BEGIN + IF EXISTS + ( + SELECT + 1 + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_SCHEMA = N'config' + AND TABLE_NAME = N'installation_history' + AND COLUMN_NAME = N'sql_server_version' + AND DATA_TYPE = N'nvarchar' + AND CHARACTER_MAXIMUM_LENGTH BETWEEN 1 AND 511 + ) + BEGIN + ALTER TABLE + config.installation_history + ALTER COLUMN + sql_server_version nvarchar(512) NOT NULL; + + PRINT 'Widened config.installation_history.sql_server_version to nvarchar(512).'; + END + ELSE + BEGIN + PRINT 'config.installation_history.sql_server_version already nvarchar(512) or wider; skipping.'; + END; +END +ELSE +BEGIN + PRINT 'Table config.installation_history does not exist; skipping.'; +END; +GO diff --git a/upgrades/2.4.0-to-2.5.0/upgrade.txt b/upgrades/2.4.0-to-2.5.0/upgrade.txt new file mode 100644 index 00000000..85e6f319 --- /dev/null +++ b/upgrades/2.4.0-to-2.5.0/upgrade.txt @@ -0,0 +1 @@ +01_widen_installation_history_sql_server_version.sql From d06fa607682ed5e79b452c734e8aff41ef15f02d Mon Sep 17 00:00:00 2001 From: Jake Morgan Date: Thu, 26 Mar 2026 13:53:52 +0000 Subject: [PATCH 2/3] backtrack upgrade script --- ...nstallation_history_sql_server_version.sql | 54 ------------------- upgrades/2.4.0-to-2.5.0/upgrade.txt | 1 - 2 files changed, 55 deletions(-) delete mode 100644 upgrades/2.4.0-to-2.5.0/01_widen_installation_history_sql_server_version.sql delete mode 100644 upgrades/2.4.0-to-2.5.0/upgrade.txt diff --git a/upgrades/2.4.0-to-2.5.0/01_widen_installation_history_sql_server_version.sql b/upgrades/2.4.0-to-2.5.0/01_widen_installation_history_sql_server_version.sql deleted file mode 100644 index b10a2452..00000000 --- a/upgrades/2.4.0-to-2.5.0/01_widen_installation_history_sql_server_version.sql +++ /dev/null @@ -1,54 +0,0 @@ -/* -Copyright 2026 Darling Data, LLC -https://www.erikdarling.com/ - -Upgrade from 2.4.0 to 2.5.0 -Widen config.installation_history.sql_server_version from nvarchar(255) to nvarchar(512). -Idempotent: safe to run multiple times. -*/ - -SET ANSI_NULLS ON; -SET ANSI_PADDING ON; -SET ANSI_WARNINGS ON; -SET ARITHABORT ON; -SET CONCAT_NULL_YIELDS_NULL ON; -SET QUOTED_IDENTIFIER ON; -SET NUMERIC_ROUNDABORT OFF; -SET IMPLICIT_TRANSACTIONS OFF; -SET STATISTICS TIME, IO OFF; -GO - -USE PerformanceMonitor; -GO - -IF OBJECT_ID(N'config.installation_history', N'U') IS NOT NULL -BEGIN - IF EXISTS - ( - SELECT - 1 - FROM INFORMATION_SCHEMA.COLUMNS - WHERE TABLE_SCHEMA = N'config' - AND TABLE_NAME = N'installation_history' - AND COLUMN_NAME = N'sql_server_version' - AND DATA_TYPE = N'nvarchar' - AND CHARACTER_MAXIMUM_LENGTH BETWEEN 1 AND 511 - ) - BEGIN - ALTER TABLE - config.installation_history - ALTER COLUMN - sql_server_version nvarchar(512) NOT NULL; - - PRINT 'Widened config.installation_history.sql_server_version to nvarchar(512).'; - END - ELSE - BEGIN - PRINT 'config.installation_history.sql_server_version already nvarchar(512) or wider; skipping.'; - END; -END -ELSE -BEGIN - PRINT 'Table config.installation_history does not exist; skipping.'; -END; -GO diff --git a/upgrades/2.4.0-to-2.5.0/upgrade.txt b/upgrades/2.4.0-to-2.5.0/upgrade.txt deleted file mode 100644 index 85e6f319..00000000 --- a/upgrades/2.4.0-to-2.5.0/upgrade.txt +++ /dev/null @@ -1 +0,0 @@ -01_widen_installation_history_sql_server_version.sql From 7f610308c16c91da788261efbb32143710dcceba Mon Sep 17 00:00:00 2001 From: Jake Morgan Date: Thu, 26 Mar 2026 14:34:12 +0000 Subject: [PATCH 3/3] Add upgrade script --- ...nstallation_history_sql_server_version.sql | 54 +++++++++++++++++++ upgrades/2.4.1-to-2.4.2/upgrade.txt | 1 + 2 files changed, 55 insertions(+) create mode 100644 upgrades/2.4.1-to-2.4.2/01_widen_installation_history_sql_server_version.sql create mode 100644 upgrades/2.4.1-to-2.4.2/upgrade.txt diff --git a/upgrades/2.4.1-to-2.4.2/01_widen_installation_history_sql_server_version.sql b/upgrades/2.4.1-to-2.4.2/01_widen_installation_history_sql_server_version.sql new file mode 100644 index 00000000..726086fa --- /dev/null +++ b/upgrades/2.4.1-to-2.4.2/01_widen_installation_history_sql_server_version.sql @@ -0,0 +1,54 @@ +/* +Copyright 2026 Darling Data, LLC +https://www.erikdarling.com/ + +Upgrade from 2.4.1 to 2.4.2 +Widen config.installation_history.sql_server_version from nvarchar(255) to nvarchar(512). +Idempotent: safe to run multiple times. +*/ + +SET ANSI_NULLS ON; +SET ANSI_PADDING ON; +SET ANSI_WARNINGS ON; +SET ARITHABORT ON; +SET CONCAT_NULL_YIELDS_NULL ON; +SET QUOTED_IDENTIFIER ON; +SET NUMERIC_ROUNDABORT OFF; +SET IMPLICIT_TRANSACTIONS OFF; +SET STATISTICS TIME, IO OFF; +GO + +USE PerformanceMonitor; +GO + +IF OBJECT_ID(N'config.installation_history', N'U') IS NOT NULL +BEGIN + IF EXISTS + ( + SELECT + 1 + FROM INFORMATION_SCHEMA.COLUMNS + WHERE TABLE_SCHEMA = N'config' + AND TABLE_NAME = N'installation_history' + AND COLUMN_NAME = N'sql_server_version' + AND DATA_TYPE = N'nvarchar' + AND CHARACTER_MAXIMUM_LENGTH BETWEEN 1 AND 511 + ) + BEGIN + ALTER TABLE + config.installation_history + ALTER COLUMN + sql_server_version nvarchar(512) NOT NULL; + + PRINT 'Widened config.installation_history.sql_server_version to nvarchar(512).'; + END + ELSE + BEGIN + PRINT 'config.installation_history.sql_server_version already nvarchar(512) or wider; skipping.'; + END; +END +ELSE +BEGIN + PRINT 'Table config.installation_history does not exist; skipping.'; +END; +GO diff --git a/upgrades/2.4.1-to-2.4.2/upgrade.txt b/upgrades/2.4.1-to-2.4.2/upgrade.txt new file mode 100644 index 00000000..85e6f319 --- /dev/null +++ b/upgrades/2.4.1-to-2.4.2/upgrade.txt @@ -0,0 +1 @@ +01_widen_installation_history_sql_server_version.sql