Skip to content

Commit 20bad9c

Browse files
author
Jake Morgan
committed
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.
1 parent 129c830 commit 20bad9c

4 files changed

Lines changed: 86 additions & 3 deletions

File tree

Installer.Tests/Helpers/TestDatabaseHelper.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ CREATE TABLE config.installation_history
6666
installation_date datetime2(7) NOT NULL DEFAULT SYSDATETIME(),
6767
installer_version nvarchar(50) NOT NULL,
6868
installer_info_version nvarchar(100) NULL,
69-
sql_server_version nvarchar(255) NOT NULL DEFAULT N'Unknown',
69+
sql_server_version nvarchar(512) NOT NULL DEFAULT N'Unknown',
7070
sql_server_edition nvarchar(255) NOT NULL DEFAULT N'Unknown',
7171
installation_type nvarchar(20) NOT NULL DEFAULT N'UPGRADE',
7272
previous_version nvarchar(50) NULL,
@@ -108,7 +108,7 @@ CREATE TABLE config.installation_history
108108
installation_date datetime2(7) NOT NULL DEFAULT SYSDATETIME(),
109109
installer_version nvarchar(50) NOT NULL,
110110
installer_info_version nvarchar(100) NULL,
111-
sql_server_version nvarchar(255) NOT NULL DEFAULT N'Unknown',
111+
sql_server_version nvarchar(512) NOT NULL DEFAULT N'Unknown',
112112
sql_server_edition nvarchar(255) NOT NULL DEFAULT N'Unknown',
113113
installation_type nvarchar(20) NOT NULL DEFAULT N'UPGRADE',
114114
previous_version nvarchar(50) NULL,

install/01_install_database.sql

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,7 @@ BEGIN
620620
installation_date datetime2(7) NOT NULL DEFAULT SYSDATETIME(),
621621
installer_version nvarchar(50) NOT NULL,
622622
installer_info_version nvarchar(100) NULL,
623-
sql_server_version nvarchar(255) NOT NULL,
623+
sql_server_version nvarchar(512) NOT NULL,
624624
sql_server_edition nvarchar(255) NOT NULL,
625625
installation_type nvarchar(20) NOT NULL, /*INSTALL, UPGRADE, REINSTALL*/
626626
previous_version nvarchar(50) NULL,
@@ -641,6 +641,34 @@ BEGIN
641641
END;
642642
GO
643643

644+
/*
645+
Widen sql_server_version when upgrading from older installs (nvarchar(255) or narrower).
646+
Idempotent: no-op if the column is already nvarchar(512) or wider, missing, or table absent.
647+
*/
648+
IF OBJECT_ID(N'config.installation_history', N'U') IS NOT NULL
649+
BEGIN
650+
IF EXISTS
651+
(
652+
SELECT
653+
1
654+
FROM INFORMATION_SCHEMA.COLUMNS
655+
WHERE TABLE_SCHEMA = N'config'
656+
AND TABLE_NAME = N'installation_history'
657+
AND COLUMN_NAME = N'sql_server_version'
658+
AND DATA_TYPE = N'nvarchar'
659+
AND CHARACTER_MAXIMUM_LENGTH BETWEEN 1 AND 511
660+
)
661+
BEGIN
662+
ALTER TABLE
663+
config.installation_history
664+
ALTER COLUMN
665+
sql_server_version nvarchar(512) NOT NULL;
666+
667+
PRINT 'Widened config.installation_history.sql_server_version to nvarchar(512).';
668+
END;
669+
END;
670+
GO
671+
644672
/*
645673
Create view to show current installed version
646674
*/
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
/*
2+
Copyright 2026 Darling Data, LLC
3+
https://www.erikdarling.com/
4+
5+
Upgrade from 2.4.0 to 2.5.0
6+
Widen config.installation_history.sql_server_version from nvarchar(255) to nvarchar(512).
7+
Idempotent: safe to run multiple times.
8+
*/
9+
10+
SET ANSI_NULLS ON;
11+
SET ANSI_PADDING ON;
12+
SET ANSI_WARNINGS ON;
13+
SET ARITHABORT ON;
14+
SET CONCAT_NULL_YIELDS_NULL ON;
15+
SET QUOTED_IDENTIFIER ON;
16+
SET NUMERIC_ROUNDABORT OFF;
17+
SET IMPLICIT_TRANSACTIONS OFF;
18+
SET STATISTICS TIME, IO OFF;
19+
GO
20+
21+
USE PerformanceMonitor;
22+
GO
23+
24+
IF OBJECT_ID(N'config.installation_history', N'U') IS NOT NULL
25+
BEGIN
26+
IF EXISTS
27+
(
28+
SELECT
29+
1
30+
FROM INFORMATION_SCHEMA.COLUMNS
31+
WHERE TABLE_SCHEMA = N'config'
32+
AND TABLE_NAME = N'installation_history'
33+
AND COLUMN_NAME = N'sql_server_version'
34+
AND DATA_TYPE = N'nvarchar'
35+
AND CHARACTER_MAXIMUM_LENGTH BETWEEN 1 AND 511
36+
)
37+
BEGIN
38+
ALTER TABLE
39+
config.installation_history
40+
ALTER COLUMN
41+
sql_server_version nvarchar(512) NOT NULL;
42+
43+
PRINT 'Widened config.installation_history.sql_server_version to nvarchar(512).';
44+
END
45+
ELSE
46+
BEGIN
47+
PRINT 'config.installation_history.sql_server_version already nvarchar(512) or wider; skipping.';
48+
END;
49+
END
50+
ELSE
51+
BEGIN
52+
PRINT 'Table config.installation_history does not exist; skipping.';
53+
END;
54+
GO
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
01_widen_installation_history_sql_server_version.sql

0 commit comments

Comments
 (0)