Skip to content

Commit 943ddc9

Browse files
Merge pull request #552 from erikdarlingdata/fix/audit-column-type-mismatches
Widen collector columns to match DMV documentation
2 parents a7291d7 + b0bb027 commit 943ddc9

8 files changed

Lines changed: 176 additions & 18 deletions

Lite/Database/Schema.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ internal_object_reserved_mb DECIMAL(18,2),
348348
version_store_reserved_mb DECIMAL(18,2),
349349
total_reserved_mb DECIMAL(18,2),
350350
unallocated_mb DECIMAL(18,2),
351-
total_sessions_using_tempdb INTEGER,
351+
total_sessions_using_tempdb BIGINT,
352352
top_session_id INTEGER,
353353
top_session_tempdb_mb DECIMAL(18,2)
354354
)";
@@ -652,7 +652,7 @@ CREATE TABLE IF NOT EXISTS session_stats (
652652
server_id INTEGER NOT NULL,
653653
server_name VARCHAR NOT NULL,
654654
program_name VARCHAR NOT NULL,
655-
connection_count INTEGER NOT NULL,
655+
connection_count BIGINT NOT NULL,
656656
running_count INTEGER NOT NULL,
657657
sleeping_count INTEGER NOT NULL,
658658
dormant_count INTEGER NOT NULL,

Lite/Services/RemoteCollectorService.SessionStats.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ ORDER BY
107107
while (await reader.ReadAsync(cancellationToken))
108108
{
109109
var programName = reader.GetString(0);
110-
var connectionCount = Convert.ToInt32(reader.GetValue(1));
110+
var connectionCount = Convert.ToInt64(reader.GetValue(1));
111111
var runningCount = Convert.ToInt32(reader.GetValue(2));
112112
var sleepingCount = Convert.ToInt32(reader.GetValue(3));
113113
var dormantCount = Convert.ToInt32(reader.GetValue(4));

Lite/Services/RemoteCollectorService.TempDb.cs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ ORDER BY (ssu.user_objects_alloc_page_count + ssu.internal_objects_alloc_page_co
5757
using var reader = await command.ExecuteReaderAsync(cancellationToken);
5858

5959
decimal userObjMb = 0, internalObjMb = 0, versionStoreMb = 0, totalReservedMb = 0, unallocatedMb = 0;
60-
int topSessionId = 0, totalSessions = 0;
60+
int topSessionId = 0;
61+
long totalSessions = 0;
6162
decimal topSessionMb = 0;
6263

6364
if (await reader.ReadAsync(cancellationToken))
@@ -73,7 +74,7 @@ ORDER BY (ssu.user_objects_alloc_page_count + ssu.internal_objects_alloc_page_co
7374
{
7475
topSessionId = reader.IsDBNull(0) ? 0 : Convert.ToInt32(reader.GetValue(0));
7576
topSessionMb = reader.IsDBNull(1) ? 0m : reader.GetDecimal(1);
76-
totalSessions = reader.IsDBNull(2) ? 0 : (int)reader.GetInt64(2);
77+
totalSessions = reader.IsDBNull(2) ? 0L : reader.GetInt64(2);
7778
}
7879
sqlSw.Stop();
7980

install/02_create_tables.sql

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -818,13 +818,13 @@ BEGIN
818818
scheduler_count integer NULL,
819819
cpu_count integer NULL,
820820
total_runnable_tasks_count integer NULL,
821-
total_work_queue_count integer NULL,
821+
total_work_queue_count bigint NULL,
822822
total_current_workers_count integer NULL,
823823
avg_runnable_tasks_count decimal(38,2) NULL,
824824
total_active_request_count integer NULL,
825825
total_queued_request_count integer NULL,
826826
total_blocked_task_count integer NULL,
827-
total_active_parallel_thread_count integer NULL,
827+
total_active_parallel_thread_count bigint NULL,
828828
runnable_request_count integer NULL,
829829
total_request_count integer NULL,
830830
runnable_percent decimal(38,2) NULL,
@@ -836,7 +836,7 @@ BEGIN
836836
/*OS Memory metrics from sys.dm_os_sys_memory*/
837837
total_physical_memory_kb bigint NULL,
838838
available_physical_memory_kb bigint NULL,
839-
system_memory_state_desc nvarchar(120) NULL,
839+
system_memory_state_desc nvarchar(256) NULL,
840840
physical_memory_pressure_warning bit NULL,
841841
/*NUMA node metrics from sys.dm_os_nodes*/
842842
total_node_count integer NULL,
@@ -1346,7 +1346,7 @@ BEGIN
13461346
wait_type nvarchar(60) NOT NULL,
13471347
wait_duration_ms bigint NOT NULL,
13481348
blocking_session_id integer NOT NULL,
1349-
resource_description nvarchar(1000) NULL,
1349+
resource_description nvarchar(3072) NULL,
13501350
database_id integer NULL,
13511351
database_name sysname NULL,
13521352
query_text nvarchar(max) NULL,
@@ -1427,10 +1427,10 @@ BEGIN
14271427
used_size_mb decimal(19,2) NULL,
14281428
auto_growth_mb decimal(19,2) NULL,
14291429
max_size_mb decimal(19,2) NULL,
1430-
recovery_model_desc nvarchar(12) NULL,
1430+
recovery_model_desc nvarchar(60) NULL,
14311431
compatibility_level integer NULL,
14321432
state_desc nvarchar(60) NULL,
1433-
volume_mount_point nvarchar(256) NULL,
1433+
volume_mount_point nvarchar(512) NULL,
14341434
volume_total_mb decimal(19,2) NULL,
14351435
volume_free_mb decimal(19,2) NULL,
14361436
/*Analysis helpers - computed columns*/

install/06_ensure_collection_table.sql

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -713,13 +713,13 @@ BEGIN
713713
scheduler_count integer NULL,
714714
cpu_count integer NULL,
715715
total_runnable_tasks_count integer NULL,
716-
total_work_queue_count integer NULL,
716+
total_work_queue_count bigint NULL,
717717
total_current_workers_count integer NULL,
718718
avg_runnable_tasks_count decimal(38,2) NULL,
719719
total_active_request_count integer NULL,
720720
total_queued_request_count integer NULL,
721721
total_blocked_task_count integer NULL,
722-
total_active_parallel_thread_count integer NULL,
722+
total_active_parallel_thread_count bigint NULL,
723723
runnable_request_count integer NULL,
724724
total_request_count integer NULL,
725725
runnable_percent decimal(38,2) NULL,
@@ -731,7 +731,7 @@ BEGIN
731731
/*OS Memory metrics from sys.dm_os_sys_memory*/
732732
total_physical_memory_kb bigint NULL,
733733
available_physical_memory_kb bigint NULL,
734-
system_memory_state_desc nvarchar(120) NULL,
734+
system_memory_state_desc nvarchar(256) NULL,
735735
physical_memory_pressure_warning bit NULL,
736736
/*NUMA node metrics from sys.dm_os_nodes*/
737737
total_node_count integer NULL,
@@ -1037,7 +1037,7 @@ BEGIN
10371037
wait_type nvarchar(60) NOT NULL,
10381038
wait_duration_ms bigint NOT NULL,
10391039
blocking_session_id integer NOT NULL,
1040-
resource_description nvarchar(1000) NULL,
1040+
resource_description nvarchar(3072) NULL,
10411041
database_id integer NULL,
10421042
database_name sysname NULL,
10431043
query_text nvarchar(max) NULL,
@@ -1107,10 +1107,10 @@ BEGIN
11071107
used_size_mb decimal(19,2) NULL,
11081108
auto_growth_mb decimal(19,2) NULL,
11091109
max_size_mb decimal(19,2) NULL,
1110-
recovery_model_desc nvarchar(12) NULL,
1110+
recovery_model_desc nvarchar(60) NULL,
11111111
compatibility_level integer NULL,
11121112
state_desc nvarchar(60) NULL,
1113-
volume_mount_point nvarchar(256) NULL,
1113+
volume_mount_point nvarchar(512) NULL,
11141114
volume_total_mb decimal(19,2) NULL,
11151115
volume_free_mb decimal(19,2) NULL,
11161116
free_space_mb AS

install/52_collect_database_size_stats.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ BEGIN
148148
ELSE CONVERT(decimal(19,2), df.max_size * 8.0 / 1024.0)
149149
END,
150150
recovery_model_desc =
151-
CONVERT(nvarchar(12), DATABASEPROPERTYEX(DB_NAME(), N'Recovery')),
151+
CONVERT(nvarchar(60), DATABASEPROPERTYEX(DB_NAME(), N'Recovery')),
152152
compatibility_level = NULL,
153153
state_desc = N'ONLINE',
154154
volume_mount_point = NULL,
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
/*
2+
Copyright 2026 Darling Data, LLC
3+
https://www.erikdarling.com/
4+
5+
Upgrade from 2.2.0 to 2.3.0
6+
Widens collector table columns to match DMV documentation:
7+
8+
cpu_scheduler_stats:
9+
- total_work_queue_count: integer -> bigint (dm_os_schedulers.work_queue_count is bigint)
10+
- total_active_parallel_thread_count: integer -> bigint (dm_resource_governor_workload_groups.active_parallel_thread_count is bigint)
11+
- system_memory_state_desc: nvarchar(120) -> nvarchar(256) (dm_os_sys_memory documents nvarchar(256))
12+
13+
waiting_tasks:
14+
- resource_description: nvarchar(1000) -> nvarchar(3072) (dm_os_waiting_tasks documents nvarchar(3072))
15+
16+
database_size_stats:
17+
- recovery_model_desc: nvarchar(12) -> nvarchar(60) (sys.databases documents nvarchar(60))
18+
- volume_mount_point: nvarchar(256) -> nvarchar(512) (dm_os_volume_stats documents nvarchar(512))
19+
*/
20+
21+
SET ANSI_NULLS ON;
22+
SET ANSI_PADDING ON;
23+
SET ANSI_WARNINGS ON;
24+
SET ARITHABORT ON;
25+
SET CONCAT_NULL_YIELDS_NULL ON;
26+
SET QUOTED_IDENTIFIER ON;
27+
SET NUMERIC_ROUNDABORT OFF;
28+
SET IMPLICIT_TRANSACTIONS OFF;
29+
SET STATISTICS TIME, IO OFF;
30+
GO
31+
32+
USE PerformanceMonitor;
33+
GO
34+
35+
/*
36+
cpu_scheduler_stats: widen integer columns to bigint
37+
*/
38+
IF OBJECT_ID(N'collect.cpu_scheduler_stats', N'U') IS NOT NULL
39+
BEGIN
40+
PRINT 'Checking collect.cpu_scheduler_stats columns...';
41+
42+
IF EXISTS
43+
(
44+
SELECT
45+
1/0
46+
FROM INFORMATION_SCHEMA.COLUMNS
47+
WHERE TABLE_SCHEMA = N'collect'
48+
AND TABLE_NAME = N'cpu_scheduler_stats'
49+
AND COLUMN_NAME = N'total_work_queue_count'
50+
AND DATA_TYPE = N'int'
51+
)
52+
BEGIN
53+
ALTER TABLE collect.cpu_scheduler_stats ALTER COLUMN total_work_queue_count bigint NULL;
54+
PRINT ' total_work_queue_count: int -> bigint';
55+
END;
56+
57+
IF EXISTS
58+
(
59+
SELECT
60+
1/0
61+
FROM INFORMATION_SCHEMA.COLUMNS
62+
WHERE TABLE_SCHEMA = N'collect'
63+
AND TABLE_NAME = N'cpu_scheduler_stats'
64+
AND COLUMN_NAME = N'total_active_parallel_thread_count'
65+
AND DATA_TYPE = N'int'
66+
)
67+
BEGIN
68+
ALTER TABLE collect.cpu_scheduler_stats ALTER COLUMN total_active_parallel_thread_count bigint NULL;
69+
PRINT ' total_active_parallel_thread_count: int -> bigint';
70+
END;
71+
72+
IF EXISTS
73+
(
74+
SELECT
75+
1/0
76+
FROM INFORMATION_SCHEMA.COLUMNS
77+
WHERE TABLE_SCHEMA = N'collect'
78+
AND TABLE_NAME = N'cpu_scheduler_stats'
79+
AND COLUMN_NAME = N'system_memory_state_desc'
80+
AND CHARACTER_MAXIMUM_LENGTH = 120
81+
)
82+
BEGIN
83+
ALTER TABLE collect.cpu_scheduler_stats ALTER COLUMN system_memory_state_desc nvarchar(256) NULL;
84+
PRINT ' system_memory_state_desc: nvarchar(120) -> nvarchar(256)';
85+
END;
86+
87+
PRINT 'cpu_scheduler_stats complete.';
88+
END;
89+
GO
90+
91+
/*
92+
waiting_tasks: widen resource_description
93+
*/
94+
IF OBJECT_ID(N'collect.waiting_tasks', N'U') IS NOT NULL
95+
BEGIN
96+
PRINT 'Checking collect.waiting_tasks columns...';
97+
98+
IF EXISTS
99+
(
100+
SELECT
101+
1/0
102+
FROM INFORMATION_SCHEMA.COLUMNS
103+
WHERE TABLE_SCHEMA = N'collect'
104+
AND TABLE_NAME = N'waiting_tasks'
105+
AND COLUMN_NAME = N'resource_description'
106+
AND CHARACTER_MAXIMUM_LENGTH = 1000
107+
)
108+
BEGIN
109+
ALTER TABLE collect.waiting_tasks ALTER COLUMN resource_description nvarchar(3072) NULL;
110+
PRINT ' resource_description: nvarchar(1000) -> nvarchar(3072)';
111+
END;
112+
113+
PRINT 'waiting_tasks complete.';
114+
END;
115+
GO
116+
117+
/*
118+
database_size_stats: widen string columns
119+
*/
120+
IF OBJECT_ID(N'collect.database_size_stats', N'U') IS NOT NULL
121+
BEGIN
122+
PRINT 'Checking collect.database_size_stats columns...';
123+
124+
IF EXISTS
125+
(
126+
SELECT
127+
1/0
128+
FROM INFORMATION_SCHEMA.COLUMNS
129+
WHERE TABLE_SCHEMA = N'collect'
130+
AND TABLE_NAME = N'database_size_stats'
131+
AND COLUMN_NAME = N'recovery_model_desc'
132+
AND CHARACTER_MAXIMUM_LENGTH = 12
133+
)
134+
BEGIN
135+
ALTER TABLE collect.database_size_stats ALTER COLUMN recovery_model_desc nvarchar(60) NULL;
136+
PRINT ' recovery_model_desc: nvarchar(12) -> nvarchar(60)';
137+
END;
138+
139+
IF EXISTS
140+
(
141+
SELECT
142+
1/0
143+
FROM INFORMATION_SCHEMA.COLUMNS
144+
WHERE TABLE_SCHEMA = N'collect'
145+
AND TABLE_NAME = N'database_size_stats'
146+
AND COLUMN_NAME = N'volume_mount_point'
147+
AND CHARACTER_MAXIMUM_LENGTH = 256
148+
)
149+
BEGIN
150+
ALTER TABLE collect.database_size_stats ALTER COLUMN volume_mount_point nvarchar(512) NULL;
151+
PRINT ' volume_mount_point: nvarchar(256) -> nvarchar(512)';
152+
END;
153+
154+
PRINT 'database_size_stats complete.';
155+
END;
156+
GO
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
01_widen_query_stats_columns.sql
2+
02_widen_audit_columns.sql

0 commit comments

Comments
 (0)