9494 -- // Source: https://ola.hallengren.com //--
9595 -- // License: https://ola.hallengren.com/license.html //--
9696 -- // GitHub: https://github.com/olahallengren/sql-server-maintenance-solution //--
97- -- // Version: 2026-07-22 18:59:22 //--
97+ -- // Version: 2026-07-22 20:03:34 //--
9898 -- --------------------------------------------------------------------------------------------------
9999
100100 SET NOCOUNT ON
@@ -124,6 +124,8 @@ BEGIN
124124 DECLARE @CurrentParameterMessage nvarchar (max )
125125
126126 DECLARE @HostPlatform nvarchar (max )
127+ DECLARE @ContainedAvailabilityGroupID uniqueidentifier
128+ DECLARE @ContainedAvailabilityGroupListenerConnection bit
127129 DECLARE @DirectorySeparator nvarchar (max )
128130
129131 DECLARE @Updated bit
@@ -173,7 +175,6 @@ BEGIN
173175 DECLARE @CurrentDate datetime2
174176 DECLARE @CurrentDateUTC datetime2
175177 DECLARE @CurrentCleanupDate datetime2
176- DECLARE @CurrentContainedAvailabilityGroupListenerConnection bit
177178 DECLARE @CurrentAvailabilityGroupReplicaID uniqueidentifier
178179 DECLARE @CurrentAvailabilityGroupID uniqueidentifier
179180 DECLARE @CurrentAvailabilityGroup nvarchar (max )
@@ -322,6 +323,15 @@ BEGIN
322323 FROM sys .dm_os_host_info
323324 END
324325
326+ IF @Version >= 16 AND @EngineEdition NOT IN (5 , 8 )
327+ BEGIN
328+ SET @CurrentCommand = ' SELECT @ParamContainedAvailabilityGroupID = contained_availability_group_id FROM sys.dm_exec_sessions WHERE session_id = @@SPID'
329+
330+ EXECUTE sp_executesql @stmt = @CurrentCommand, @params = N ' @ParamContainedAvailabilityGroupID uniqueidentifier OUTPUT' , @ParamContainedAvailabilityGroupID = @ContainedAvailabilityGroupID OUTPUT
331+ END
332+
333+ SET @ContainedAvailabilityGroupListenerConnection = CASE WHEN @ContainedAvailabilityGroupID IS NOT NULL THEN 1 ELSE 0 END
334+
325335 DECLARE @AmazonRDS bit = CASE WHEN @EngineEdition IN (5 , 8 ) THEN 0 WHEN EXISTS (SELECT * FROM sys .databases WHERE [name] = ' rdsadmin' ) AND SUSER_SNAME (0x01) = ' rdsa' THEN 1 ELSE 0 END
326336
327337 -- --------------------------------------------------------------------------------------------------
@@ -432,6 +442,12 @@ BEGIN
432442 RAISERROR (' %s' ,10 ,1 ,@StartMessage) WITH NOWAIT
433443 END
434444
445+ IF @Version >= 16 AND @EngineEdition NOT IN (5 , 8 )
446+ BEGIN
447+ SET @StartMessage = ' Contained availability group connection: ' + CASE WHEN @ContainedAvailabilityGroupListenerConnection = 1 THEN ' Yes' WHEN @ContainedAvailabilityGroupListenerConnection = 0 THEN ' No' ELSE ' N/A' END
448+ RAISERROR (' %s' ,10 ,1 ,@StartMessage) WITH NOWAIT
449+ END
450+
435451 SET @StartMessage = ' Database: ' + QUOTENAME (DB_NAME ())
436452 RAISERROR (' %s' ,10 ,1 ,@StartMessage) WITH NOWAIT
437453
@@ -2883,8 +2899,6 @@ BEGIN
28832899 WHEN @MaxTransferSize IS NULL AND @Compress = ' Y' AND @CurrentIsEncrypted = 1 AND @BackupSoftware IS NULL AND (@Version < 15 .04043 AND NOT (@EngineEdition = 8 AND @ProductUpdateType = ' Continuous' )) AND @Credential IS NULL THEN 65537
28842900 END
28852901
2886- SET @CurrentContainedAvailabilityGroupListenerConnection = 0
2887-
28882902 IF @IsHadrEnabled = 1
28892903 BEGIN
28902904 SELECT @CurrentAvailabilityGroupReplicaID = databases .replica_id
@@ -2898,14 +2912,7 @@ BEGIN
28982912
28992913 IF @CurrentAvailabilityGroupReplicaID IS NULL AND @CurrentAvailabilityGroupID IS NULL AND @Version >= 16
29002914 BEGIN
2901- SET @CurrentCommand = ' SELECT @ParamAvailabilityGroupID = contained_availability_group_id FROM sys.dm_exec_sessions WHERE session_id = @@SPID'
2902-
2903- EXECUTE sp_executesql @stmt = @CurrentCommand, @params = N ' @ParamAvailabilityGroupID uniqueidentifier OUTPUT' , @ParamAvailabilityGroupID = @CurrentAvailabilityGroupID OUTPUT
2904-
2905- IF @CurrentAvailabilityGroupID IS NOT NULL
2906- BEGIN
2907- SET @CurrentContainedAvailabilityGroupListenerConnection = 1
2908- END
2915+ SET @CurrentAvailabilityGroupID = @ContainedAvailabilityGroupID
29092916
29102917 SELECT @CurrentAvailabilityGroupReplicaID = replica_id
29112918 FROM sys .dm_hadr_availability_replica_states
@@ -2972,7 +2979,7 @@ BEGIN
29722979 AND NOT @CurrentInStandby = 1
29732980 AND (@CurrentAvailabilityGroupRole = ' PRIMARY' OR @CurrentAvailabilityGroupRole IS NULL )
29742981 AND (@CurrentDistributedAvailabilityGroupRole = ' PRIMARY' OR @CurrentDistributedAvailabilityGroupRole IS NULL )
2975- AND (@BackupType IN (' DIFF' ,' FULL' ) OR (@ChangeBackupType = ' Y' AND @CurrentBackupType = ' LOG' AND @CurrentRecoveryModel IN (' FULL' ,' BULK_LOGGED' ) AND @CurrentLogLSN IS NULL AND NOT (@CurrentDatabaseName = ' master' AND @CurrentContainedAvailabilityGroupListenerConnection = 0 )))
2982+ AND (@BackupType IN (' DIFF' ,' FULL' ) OR (@ChangeBackupType = ' Y' AND @CurrentBackupType = ' LOG' AND @CurrentRecoveryModel IN (' FULL' ,' BULK_LOGGED' ) AND @CurrentLogLSN IS NULL AND NOT (@CurrentDatabaseName = ' master' AND @ContainedAvailabilityGroupListenerConnection = 0 )))
29762983 BEGIN
29772984 SET @CurrentCommand = ' SELECT @ParamAllocatedExtentPageCount = SUM(allocated_extent_page_count), @ParamModifiedExtentPageCount = SUM(modified_extent_page_count) FROM sys.dm_db_file_space_usage'
29782985
@@ -2988,11 +2995,11 @@ BEGIN
29882995
29892996 IF @ChangeBackupType = ' Y'
29902997 BEGIN
2991- IF @CurrentBackupType = ' LOG' AND @CurrentRecoveryModel IN (' FULL' ,' BULK_LOGGED' ) AND @CurrentLogLSN IS NULL AND NOT (@CurrentDatabaseName = ' master' AND @CurrentContainedAvailabilityGroupListenerConnection = 0 ) AND (@BackupInProgress = 0 OR @BackupInProgress IS NULL )
2998+ IF @CurrentBackupType = ' LOG' AND @CurrentRecoveryModel IN (' FULL' ,' BULK_LOGGED' ) AND @CurrentLogLSN IS NULL AND NOT (@CurrentDatabaseName = ' master' AND @ContainedAvailabilityGroupListenerConnection = 0 ) AND (@BackupInProgress = 0 OR @BackupInProgress IS NULL )
29922999 BEGIN
29933000 SET @CurrentBackupType = ' DIFF'
29943001 END
2995- IF @CurrentBackupType = ' DIFF' AND ((@CurrentDatabaseName = ' master' AND @CurrentContainedAvailabilityGroupListenerConnection = 0 ) OR @CurrentDifferentialBaseLSN IS NULL OR (@CurrentModifiedExtentPageCount * 1 . / NULLIF (@CurrentAllocatedExtentPageCount, 0 ) * 100 >= @MinModificationLevel) OR (COALESCE (CAST (@CurrentAllocatedExtentPageCount AS bigint ) * 8192 , CAST (@CurrentDatabaseSize AS bigint ) * 8192 ) < CAST (@MinDatabaseSizeForDifferentialBackup AS bigint ) * 1024 * 1024 ))
3002+ IF @CurrentBackupType = ' DIFF' AND ((@CurrentDatabaseName = ' master' AND @ContainedAvailabilityGroupListenerConnection = 0 ) OR @CurrentDifferentialBaseLSN IS NULL OR (@CurrentModifiedExtentPageCount * 1 . / NULLIF (@CurrentAllocatedExtentPageCount, 0 ) * 100 >= @MinModificationLevel) OR (COALESCE (CAST (@CurrentAllocatedExtentPageCount AS bigint ) * 8192 , CAST (@CurrentDatabaseSize AS bigint ) * 8192 ) < CAST (@MinDatabaseSizeForDifferentialBackup AS bigint ) * 1024 * 1024 ))
29963003 BEGIN
29973004 SET @CurrentBackupType = ' FULL'
29983005 END
@@ -3080,12 +3087,6 @@ BEGIN
30803087
30813088 IF @CurrentAvailabilityGroup IS NOT NULL
30823089 BEGIN
3083- IF @Version >= 16 AND @EngineEdition NOT IN (5 , 8 )
3084- BEGIN
3085- SET @StartMessage = ' Contained availability group connection: ' + CASE WHEN @CurrentContainedAvailabilityGroupListenerConnection = 1 THEN ' Yes' WHEN @CurrentContainedAvailabilityGroupListenerConnection = 0 THEN ' No' ELSE ' N/A' END
3086- RAISERROR (' %s' ,10 ,1 ,@StartMessage) WITH NOWAIT
3087- END
3088-
30893090 SET @DatabaseMessage = ' Availability group: ' + ISNULL (@CurrentAvailabilityGroup,' N/A' )
30903091 RAISERROR (' %s' ,10 ,1 ,@DatabaseMessage) WITH NOWAIT
30913092
@@ -3185,7 +3186,7 @@ BEGIN
31853186 AND NOT (@CurrentBackupType = ' LOG' AND @CurrentRecoveryModel = ' SIMPLE' )
31863187 AND NOT (@CurrentBackupType = ' LOG' AND @CurrentRecoveryModel IN (' FULL' ,' BULK_LOGGED' ) AND @CurrentLogLSN IS NULL )
31873188 AND NOT (@CurrentBackupType = ' DIFF' AND @CurrentDifferentialBaseLSN IS NULL )
3188- AND NOT (@CurrentBackupType IN (' DIFF' ,' LOG' ) AND (@CurrentDatabaseName = ' master' AND @CurrentContainedAvailabilityGroupListenerConnection = 0 ))
3189+ AND NOT (@CurrentBackupType IN (' DIFF' ,' LOG' ) AND (@CurrentDatabaseName = ' master' AND @ContainedAvailabilityGroupListenerConnection = 0 ))
31893190 AND NOT (@CurrentAvailabilityGroup IS NOT NULL AND @CurrentBackupOperationSupportedOnSecondaryReplicas = 0 AND (@CurrentAvailabilityGroupRole <> ' PRIMARY' OR @CurrentAvailabilityGroupRole IS NULL ))
31903191 AND NOT (@CurrentAvailabilityGroup IS NOT NULL AND @CurrentBackupOperationSupportedOnSecondaryReplicas = 1 AND (@CurrentIsPreferredBackupReplica <> 1 OR @CurrentIsPreferredBackupReplica IS NULL ) AND @OverrideBackupPreference = ' N' )
31913192 AND NOT (@CurrentDistributedAvailabilityGroup IS NOT NULL AND @CurrentBackupOperationSupportedOnSecondaryReplicas = 0 AND (@CurrentDistributedAvailabilityGroupRole <> ' PRIMARY' OR @CurrentDistributedAvailabilityGroupRole IS NULL ))
@@ -4479,7 +4480,6 @@ BEGIN
44794480 SET @CurrentDate = NULL
44804481 SET @CurrentDateUTC = NULL
44814482 SET @CurrentCleanupDate = NULL
4482- SET @CurrentContainedAvailabilityGroupListenerConnection = NULL
44834483 SET @CurrentAvailabilityGroupReplicaID = NULL
44844484 SET @CurrentAvailabilityGroupID = NULL
44854485 SET @CurrentAvailabilityGroup = NULL
0 commit comments