FIX: Errors occur after you apply a cumulative update to an instance of SQL Server that has a contained availability group
Symptoms
Consider the following scenario:
- You have an instance of SQL Server 2022 that has a contained availability group deployed.
- You create server-level objects (logins and jobs) in the context of the contained availability group.
In this scenario, one of the following errors occurs after you install a cumulative update on this instance of SQL Server.
Error 1
The SQL Server Agent job fails with the following error message:
Unable to start execution of step 2 (reason: JobOwner <JobOwner> doesn't have permissions to use proxy <#> for subsystem SSIS). The step failed.
You see the SQL Server Agent error log records error messages that resemble the following ones:
<Timestamp> - ! [298] SQLServer Error: 208, Invalid object name 'syssubsystems'. [SQLSTATE 42S02]
<Timestamp> - ! [517] SQL error number 208, severity 16
At this stage, the syssubsystems
table is missing from the msdb
database of the contained availability group and exists in the instance-level msdb
database. To fix these errors and allow the jobs to run successfully, you can manually copy the instance-level syssubsystems
table to the msdb
database of the contained availability group by connecting to the listener and creating the table and the rows in the table.
Error 2
After you create a contained availability group, you see the following error message every five seconds:
The activated proc '[dbo].[sp_syspolicy_events_reader]' running on queue '<AGName>_AG_SYNC_CONTAINED_msdb.dbo.syspolicy_event_queue' output the following: 'Cannot execute as the database principal because the principal "##MS_PolicyEventProcessingLogin##" does not exist, this type of principal cannot be impersonated, or you do not have permission.'
Error 3
After Database Mail stops working, trying to run the sysmail
stored procedure will report an error message that resembles the following one:
The object '[dbo].[sp_syspolicy_events_reader]' does not exist in database 'master' or is invalid for this operation.
Error 4
After you create a contained availability group, if you connect to the contained availability group listener and create a SQL Server login principal, you will receive the following error in SQL Server Management Studio (SSMS) when you connect by using the login principal:
Error connecting to <your listener>
Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
The EXECUTE permission was denied on the object 'xp_msver', database 'mssqlsystemresource', schema 'sys'. (Microsoft SQL Server, Error: 229)
This error occurs because the public
role isn't granted the EXECUTE
permission on the xp_msver
extended stored procedure on the contained availability group (AG) master.
Resolution
This problem is fixed in the following cumulative update for SQL Server:
Cumulative Update 4 for SQL Server 2022
About cumulative updates for SQL Server
Each new cumulative update for SQL Server contains all the hotfixes and security fixes that were in the previous build. We recommend that you install the latest build for your version of SQL Server:
Latest cumulative update for SQL Server 2022
Status
Microsoft is currently investigating these issues. This article will be updated as we find more information or guidance. Until then, you can take the following necessary precautions before you install a cumulative update to an installation that has a contained availability group:
- Script the server-level objects and SQL Server Agent objects.
- Drop the contained availability group.
- Apply the cumulative update.
- Recreate the contained availability group.
Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section.
References
Learn about the terminology that Microsoft uses to describe software updates.