New Error Messages in SQL Server 2022
The error log is a poor place to discover that your alert parser knows too much about one exact sentence. A cumulative update (CU) can change a word, add a placeholder, or move an error to a different severity. If the parser keys on message text instead of message ID, the alert can miss the event you expected it to catch.

This post is the last one in the first half of the series. For the overall method, see the first post in this series. That post also has the object-level count. This post stays with sys.messages. The sys.messages catalog view stores SQL Server message IDs, severity levels, and message text for each language.[1]
For English messages (language_id = 1033), my 2019 to 2022 diff found 1,725 message IDs that were new in SQL Server 2022. It also found 181 existing message IDs with changed severity or text. A case-sensitive comparison finds 8 more, where only the capitalization or trailing spaces changed. Another 47 message IDs were present in SQL Server 2019 but not in SQL Server 2022. These counts come from the pairwise diff file for the 2019 to 2022 inventory.
Documentation is better here
The result for messages is different from the result for system objects. I parsed the SQL Server 2022 Database Engine events and errors include files in the MicrosoftDocs sql-docs repository. All 1,725 message IDs that were new in my 2022 inventory appear in those SQL Server 2022 include files. I also tested known older IDs: 102, 207, 18456, and 32040. The known-ID test made the parser find IDs in small ranges, linked rows, and larger range files.[2]
The range-page result is still a specific kind of documentation. The range pages say that the descriptions are the text from sys.messages. Only 11 of the 1,725 new message IDs also had individual mssqlserver- pages in the local docs source. For most messages, the public documentation is the catalog text itself, not a troubleshooting page.
Where the new IDs landed
The new IDs cluster in a few ranges. The three largest ranges contain 1,097 of the 1,725 new IDs.
| Range | New messages | Severity mix | Documented in range pages |
|---|---|---|---|
| 41400-49999 | 459 | 10: 47, 11: 2, 14: 4, 15: 9, 16: 379, 17: 9, 20: 1, 21: 8 | 459 |
| 31000-41399 | 361 | 10: 24, 16: 328, 17: 4, 20: 3, 21: 1, 22: 1 | 361 |
| 22000-22999 | 277 | 10: 23, 13: 1, 16: 237, 17: 14, 21: 2 | 277 |
| 16000-17999 | 160 | 10: 32, 15: 7, 16: 115, 17: 3, 18: 1, 20: 2 | 160 |
| 15000-15999 | 66 | 10: 3, 16: 63 | 66 |
| All other ranges | 402 | mixed | 402 |
Severity matters because Microsoft defines severity 11 through 16 as errors that a user can correct. It defines severity 17 through 19 as software errors that the user can’t correct.[3] The inventory has 1,507 new messages at severity 16 or higher. Many of these messages are tied to rollout work. A database administrator (DBA) might test or enable those features, so they are not only internal status messages.
The feature names in the message text
Message text is not a feature inventory. A feature can exist without naming itself in an error, and an internal name can appear without a public explanation. I grouped the 1,725 new messages by keywords in their text, for example “ledger”, “S3” or “OPENROWSET”. The groups overlap, so one message can count in more than one row, and the rows don’t add up to 1,725.
| Family from message text | New messages | Severity mix |
|---|---|---|
| Authentication, credentials, certificates, and permissions | 177 | 10: 35, 11: 1, 14: 6, 16: 129, 17: 3, 20: 1, 21: 2 |
| Ledger | 121 | 10: 4, 15: 1, 16: 113, 17: 1, 20: 2 |
| S3, URL, HTTP, and external endpoints | 116 | 10: 2, 15: 1, 16: 110, 17: 2, 21: 1 |
| Backup, restore, snapshots, and storage | 101 | 10: 5, 16: 86, 17: 3, 21: 7 |
| External tables and OPENROWSET | 78 | 10: 3, 11: 1, 15: 7, 16: 67 |
| Change feed and Synapse Link | 73 | 10: 3, 16: 70 |
| External governance and policy | 36 | 10: 11, 14: 4, 16: 21 |
| Availability groups | 16 | 16: 16 |
| Query Store hints and query variants | 9 | 10: 2, 15: 1, 16: 5, 18: 1 |
| XML compression | 4 | 15: 2, 16: 2 |
| FIDO, GLM, TOAD, and flighting names | 4 | 16: 4 |
| Approximate percentile | 2 | 16: 2 |
The broad groups line up with several SQL Server 2022 feature areas that Microsoft describes in its “What’s new” article. The overlapping areas include Azure Synapse Link, object storage integration, contained availability groups, Microsoft Purview integration, and ledger. They also include Query Store hints, memory grant feedback, and degree of parallelism (DOP) feedback. The list continues with cardinality estimation feedback, XML compression, and approximate percentile functions.[4] The phrase “DOP feedback” did not appear in the new message text. I found query feedback wording only once, in message 12462: “Malformed feedback data for query ID.”
A few internal-looking names appear too. The new 2022 message text contains one FIDO message, one GLM message inside that FIDO text, one TOAD message, and two flighting messages. I found FIDO and Trident only in Microsoft error-message tables when I searched the docs repositories. I did not find a public source that expands those names. Without a source, I left those terms as names copied from the message text.
Messages a DBA may see
These examples are messages that can matter when you investigate changes in a running system. They are all severity 15 or 16:
| Message ID | Severity | Message text |
|---|---|---|
| 37361 | 16 | Cannot update ledger history table ‘%.*ls’. |
| 12458 | 16 | Query with query_id %d has query store hints. Query Store can’t force a plan for it while it has hints. |
| 16209 | 15 | The PARTITION=ALL clause must be specified to enable XML compression for the table or index. |
| 31629 | 16 | The external rest endpoint execution exceeded the timeout value. |
| 9836 | 16 | The query processor encountered an unexpected error during processing an APPROX_PERCENTILE function. Please contact support. |
These messages cover data definition language (DDL), Query Store operations, external access, and query execution. A monitoring tool that classifies new 2022 messages as unknown may require review before a compatibility-level change or feature pilot.
Here is the read-only query I used on the 2025 instance to look up the sample message text. Change the list of message IDs for the errors you want to inspect.
|
1 2 3 4 5 6 7 8 9 10 11 |
SELECT [Message ID] = [message_id] , [Severity] = [severity] , [Message Text] = [text] FROM [sys].[messages] WHERE [language_id] = 1033 AND [message_id] IN (37361, 12458, 16209, 31629, 9836) ORDER BY [message_id]; |
Changed text can break text matching
The changed-message set is where alert parsers get fragile. I found one changed severity: message 1132 moved from severity 17 to severity 16, with the same text. The severity change may affect severity-based routing.
Placeholder changes are another risk for text-based parsers. Sixty-eight of the 181 changed messages changed their placeholder list. Message 22902 changed from “Sysadmin privileges are required” to “%s privileges are required.” Message 39004 added an external script request ID. Message 5040 changed from a generic file-size message to one that includes the database name, file ID, current size, and maximum size.
The added details may make the messages easier to interpret. They are a risk for anything that matches the formatted sentence. A parser that expects the old message text for MODIFY FILE failed. Size is greater than MAXSIZE. won’t match the 2022 wording. A parser that keys on message_id 5040 still has the same anchor, and it can treat the message text as detail.
The removed messages appeared less relevant to the operational examples in this post. Several mention federations, elastic pool service objectives, Azure SQL Database copy operations, or older FILESTREAM wording. I did not find a removed-message group that fit the practical alerting point better than the changed text.
The next set of posts compares SQL Server 2022 with 2025. If an alert or log parser missed a SQL Server message after an upgrade, tell me. You can find me on Bluesky or LinkedIn.
References
- sys.messages (Transact-SQL) - Microsoft Learn. Defines
sys.messages, includingmessage_id,language_id,severity,is_event_logged, andtext. ↩ - Database Engine events and errors - Microsoft Learn. States that the section contains error message numbers and descriptions from
sys.messages, and links to the versioned range pages. ↩ - Database Engine Error Severities - Microsoft Learn. Defines the severity ranges used to interpret new messages. ↩
- What’s New in SQL Server 2022 - Microsoft Learn. Lists SQL Server 2022 features that align with several message-text families. ↩