From 2d122abec7427858181b87f65a077cc1a9b4728b Mon Sep 17 00:00:00 2001 From: Erik Darling <2136037+erikdarlingdata@users.noreply.github.com> Date: Thu, 19 Mar 2026 10:30:59 -0400 Subject: [PATCH] Fix File I/O NULL fallbacks when sys.master_files is inaccessible (#633) When the login lacks VIEW ANY DEFINITION, sys.master_files returns NULLs via the LEFT JOIN. Updated ISNULL fallbacks in both the Lite collector and the Full Edition install script: - database_name: falls back to DB_NAME(vfs.database_id) - file_name: falls back to 'File_{file_id}' - physical_name: falls back to empty string Co-Authored-By: Claude Opus 4.6 (1M context) --- Lite/Services/RemoteCollectorService.FileIo.cs | 8 ++++---- install/20_collect_file_io_stats.sql | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Lite/Services/RemoteCollectorService.FileIo.cs b/Lite/Services/RemoteCollectorService.FileIo.cs index f7114105..203573e4 100644 --- a/Lite/Services/RemoteCollectorService.FileIo.cs +++ b/Lite/Services/RemoteCollectorService.FileIo.cs @@ -59,10 +59,10 @@ LEFT JOIN sys.database_files AS df SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; SELECT - database_name = ISNULL(d.name, N'Unknown'), - file_name = mf.name, - file_type = mf.type_desc, - physical_name = mf.physical_name, + database_name = ISNULL(d.name, DB_NAME(vfs.database_id)), + file_name = ISNULL(mf.name, N'File_' + CONVERT(nvarchar(10), vfs.file_id)), + file_type = ISNULL(mf.type_desc, N'UNKNOWN'), + physical_name = ISNULL(mf.physical_name, N''), size_mb = CONVERT(decimal(18,2), vfs.size_on_disk_bytes / 1048576.0), num_of_reads = vfs.num_of_reads, num_of_writes = vfs.num_of_writes, diff --git a/install/20_collect_file_io_stats.sql b/install/20_collect_file_io_stats.sql index d2e3f7f5..44b71021 100644 --- a/install/20_collect_file_io_stats.sql +++ b/install/20_collect_file_io_stats.sql @@ -134,14 +134,14 @@ BEGIN ISNULL ( d.name, - N'UNKNOWN' + DB_NAME(vfs.database_id) ), file_id = vfs.file_id, file_name = ISNULL ( mf.name, - N'UNKNOWN' + N'File_' + CONVERT(nvarchar(10), vfs.file_id) ), file_type_desc = ISNULL @@ -149,7 +149,7 @@ BEGIN mf.type_desc, N'UNKNOWN' ), - physical_name = mf.physical_name, + physical_name = ISNULL(mf.physical_name, N''), size_on_disk_bytes = vfs.size_on_disk_bytes, num_of_reads = vfs.num_of_reads, num_of_bytes_read = vfs.num_of_bytes_read,