diff --git a/Installer.Tests/Helpers/TestDatabaseHelper.cs b/Installer.Tests/Helpers/TestDatabaseHelper.cs index 8f5b9f6..12ef5a4 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 2d71820..8a9bddb 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.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 0000000..726086f --- /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 0000000..85e6f31 --- /dev/null +++ b/upgrades/2.4.1-to-2.4.2/upgrade.txt @@ -0,0 +1 @@ +01_widen_installation_history_sql_server_version.sql