The sp_fido_* Procedures and the Rest of the FIDO Surface in SQL Server 2022

I started with sp_spaceused because it is familiar, and because its SQL Server 2022 body has a branch that can call sys.sp_fido_spaceused instead.

A woman DBA holds a magnifying glass up to a cabinet of locked drawers stamped with the same symbol.  A few drawers are open, showing glowing gears inside.

I followed that branch because the first post in this series found 25 FIDO-named procedures added in SQL Server 2022. Part 4 covered the new wait types. In this part, I map the FIDO names I can see in the catalog, Extended Events (SQL Server diagnostic event metadata) and messages, without executing any sp_fido_* procedure.

I don’t have a public source that expands FIDO in this SQL Server context. I found Azure identity documentation that uses the same string for a different authentication topic. I also found SQL Server error-message source that uses FIDO in database engine messages. I did not find a Microsoft page that explains the SQL Server internal feature name, so I am not expanding it here.[1]

What I counted

I searched the 2019, 2022 and 2025 CU9 inventory files for fido, case-insensitive. I searched both the item name and detail columns. The inventory source files came from SQL Server 2019 CU32, SQL Server 2022 CU25 and SQL Server 2025 CU9. I also checked the 2025 RTM (release to manufacturing) inventory, and its FIDO counts matched 2025 CU9 for this search.

Category 2019 2022 2025 CU9
Objects 3 28 24
Columns 0 0 0
Extended Events events 1 66 61
Extended Events actions 0 3 3
Extended Events maps 0 6 4
Spinlocks 0 9 9
Latch classes 0 2 2
Wait types 3 6 6
Messages 26 1 1
Permissions 0 0 0

I started with the object row because that count changed the most. SQL Server 2019 had three FIDO-named system objects, all extended stored procedures. SQL Server 2022 had 28. Twenty-four were sp_fido_* procedures, and four were lock helpers named sp_get_fido_lock, sp_get_fido_lock_batch, sp_release_fido_lock and sp_release_all_fido_locks. Those four lock helpers are absent from the SQL Server 2025 CU9 inventory.

The procedures are mostly extended procedures

Of the 28 FIDO-named procedures in SQL Server 2022, 27 are extended stored procedures. Extended stored procedures do not have a Transact-SQL (T-SQL) module body in OBJECT_DEFINITION, so the extracted definitions did not include their implementation. For that reason, I am not describing what sp_fido_tran_begin, sp_fido_tran_commit or sp_fido_build_histogram do. Their names are evidence that the surface exists, not proof of behaviour.

The one SQL stored procedure is sys.sp_fido_spaceused. Its parameters are @objname nvarchar(776), @updateusage varchar(5) and @oneresultset bit on the 2025 instance. The 2022 definition accepts the same parameters. I did not execute it.

The definition is still useful. For a database summary, sp_fido_spaceused calls sys.sp_fido_get_remote_storage_size with mode 1. For a table, it reads sys.sysseobjvalues and sys.sysrowsets, then calls sys.sp_fido_get_remote_storage_size for data and secondary-index directories. It also calls sys.sp_fido_get_CS_rowset_row_count for columnstore rowsets. Both called procedures are extended procedures, so their implementation was outside the extracted T-SQL definitions.

sys.sp_spaceused has the caller-side branch. If the caller has VIEW DATABASE STATE, and sys.dm_dw_databases has a row for the current database name, sp_spaceused calls sys.sp_fido_spaceused and returns its result. The 2022 definition has this comment: “We should only have record in sys.dm_dw_databases, when Fido is enabled.” I am quoting the system procedure text, not a documentation page.

The Extended Events metadata uses FIDO in more places

SQL Server 2022 has 42 events in an Extended Events package named XeSqlFido. SQL Server 2025 CU9 has 41 because XeSqlFido.fido_metadata_cleanup was removed. I also counted every Extended Events event whose package, name or description contains fido. By that wider count, SQL Server 2022 has 66 and SQL Server 2025 CU9 has 61.

The descriptions are Microsoft’s own Extended Events metadata. They mention a physical catalog, cache version updates, clone information, garbage collection, GLM backup and restore, and PIT database create and drop. They also mention index store statistics, lock manager messages, rowgroup visibility, RSC version tracking, sequence information, spaceused, T-SQL exceptions and transport messages. The sqlserver package has more FIDO-named events outside the XeSqlFido package. Those events include transaction begin, commit and abort traces, scanner progress, temp table mapping and a columnstore event. The columnstore event description says remaining rows in a rowgroup were flushed into the deltastore.

The map and action names use many of the same terms. SQL Server 2022 has maps for FIDO lock manager operation types, transaction abort reasons, transaction activity types and transaction begin reasons. It also has maps for metadata cleanup type and row-group population mode. SQL Server 2025 CU9 no longer has the lock-operation map or the metadata-cleanup map. The three actions in both versions collect transaction read version, transaction write version and nested write version.

Extended Events names and descriptions are metadata. They can show the vocabulary Microsoft put in the product. They do not tell me which code path runs on a regular boxed SQL Server instance.

SQL Server 2022 uses less FIDO-specific wording in these messages

The message rows changed differently from the object and Extended Events rows. SQL Server 2019 has 26 error messages whose text contains FIDO. SQL Server 2022 has one: message 22381, severity 16, “Fido GLM remote execute command failed.” SQL Server 2025 CU9 has the same one.

Most of the older message IDs did not disappear. Their text changed. For example, SQL Server 2019 message 22301 said, “DW FIDO mode is not enabled.” In SQL Server 2022 it says, “The feature is not supported in this version of SQL Server.” Message 22308 changed from “Fido thread failed to acquire a lock” to “Thread failed to acquire a lock.” Message 22323 changed from “DW FIDO GLM server is not initialized” to “Server is not initialized.” The public error-message include files show the same pattern. They have FIDO wording for SQL Server 2019 and more general wording for SQL Server 2022 and 2025.[2]

The rows do not prove why the wording changed. They show that SQL Server 2022 added many FIDO-named procedures and Extended Events. At the same time, the error messages in that ID range lost most of their FIDO wording.

What I did not verify

I did not find public documentation for the sp_fido_* procedures or the XeSqlFido package. I also did not find public documentation for the FIDO spinlocks or the FIDO latch classes in the SQL Server, Azure and Fabric documentation repositories. The substring search found unrelated identity-authentication content, plus SQL Server error-message include files. The whole-word search found the same SQL Server error-message include files and one Azure SQL Managed Instance identity page.

I also did not test execution. I made that choice intentionally. The readable definition of sp_fido_spaceused calls extended procedures named for remote storage size, and reads internal rowset tables. I am only claiming that the names, definitions and metadata exist in the catalog.

In part 6, I will look at sys.fn_filelog in SQL Server 2022.

Have you seen any of these FIDO names in your own monitoring, or do you know of documentation my searches missed? Tell me on Bluesky or LinkedIn, and I’ll update the notes.

References

  1. MicrosoftDocs/sql-docs, MicrosoftDocs/azure-docs and MicrosoftDocs/fabric-docs - GitHub. The Markdown source of Microsoft Learn, searched for fido as a whole word and as a substring on 2026-09-26. The matches were the SQL Server error-message include files and one Azure SQL Managed Instance identity page. ↩
  2. SQL Server 2019, SQL Server 2022 and SQL Server 2025 database engine events and errors 22000 to 22999 - MicrosoftDocs/sql-docs on GitHub. The 2019 file has FIDO wording in messages 22301 to 22307. The 2022 and 2025 files have more general wording. ↩