When we have un have an unhealthy data synchronization state, we can always use graphic interface to resume data movement.

This script resume when the database need it, but you must connect on secondary server to run it.

 1
 2-- You can use SQLCMD Mode
 3-- :CONNECT <MyServer>
 4PRINT '-- SQL Script to SET HADR RESUME'
 5PRINT ''
 6SET NOCOUNT ON;
 7DECLARE @sql nvarchar(MAX);
 8
 9DECLARE @dbname nvarchar(255);
10BEGIN TRY DROP TABLE #db; END TRY BEGIN CATCH END CATCH;
11SELECT sys.databases.[name] INTO #db
12FROM sys.dm_hadr_database_replica_states INNER JOIN sys.databases
13    ON    sys.dm_hadr_database_replica_states.database_id = sys.databases.database_id
14    WHERE
15        sys.dm_hadr_database_replica_states.synchronization_health = 0
16        AND sys.dm_hadr_database_replica_states.is_primary_replica = 0
17        AND sys.databases.state_desc = 'ONLINE'
18DECLARE @SqlTemplate nvarchar(MAX) = 'ALTER DATABASE [#(name)] SET HADR RESUME;'
19WHILE ((SELECT count(*)    FROM #db)>0)
20BEGIN
21
22    SET @sql = '';
23    SELECT TOP 1 @dbname = name
24    ,            @sql = REPLACE(@SqlTemplate,'#(name)', name)
25    FROM #db f ORDER BY f.name;
26    DELETE FROM #db WHERE name = @dbname;
27
28    IF NOT(@sql = '')
29    BEGIN
30        SET @sql = 'PRINT ''Database:'+@dbname+''';' + CHAR(13) + CHAR(10)+@sql;
31        PRINT @sql;
32        --EXEC (@sql);
33    END
34
35END