DbMgrPartnerCommitPolicy::SetSyncState May Seem More Mysterious than It Actually Is

This post has been republished via RSS; it originally appeared at: SQL Server Support articles.

First published on MSDN on May 24, 2017
AlwaysOn has become a major SQL Server technology. In my own process of learning it, I have often wondered what this mysterious message means.

DbMgrPartnerCommitPolicy::SetSyncState: 00000026BD96D330:4

Decoding it may help others out there settle the fear of the unknown.

1. This message indicates the Synchronization state of an AlwaysOn partner: thus the "  DbMgrPartnerCommitPolicy::SetSyncState"

2. The long pointer-formatted hexadecimal number after the colon (:) is a pointer (memory address) to one of the AlwaysOn partners.
In the example above the value is 00000026BD96D330.
It certainly remains a mystery though which partner it is. This is not the GUID replica ID that is stored in many DMVs like sys.dm_hadr_database_replica_states. It is a memory address, so it is not particularly useful.

3. The last component is the integer value at the end (one following the second colon). In this case the number is 4.

Here are the possible states:

0 - Not Joined to AG
1 - Not Synchronized
2 - Suspended
4 - Synchronized
8 - Redo (redoing log)


Knowing all this, I personally don't look at this message much, but prefer to look at the text message in the SQL Server Errorlog. Those message provide human-readable information that is more readily accessible to the user and allow for a smooth, albeit patience-filled examination of the sequence of events.

Examples of such messages include:
The availability group 'AG1' is being asked to stop the lease renewal because the availability group is going offline. This is an informational message only. No user action is required.

The availability group database "AG1" is changing roles from "PRIMARY" to "RESOLVING" because the mirroring session or availability group failed over due to role synchronization. This is an informational message only. No user action is required.

AlwaysOn Availability Groups connection with secondary database terminated for primary database 'AG1' on the availability replica 'SERVER1\INSTA' with Replica ID: {80167511-8000-3687-adb4-6d7fe62faddD}. This is an informational message only. No user action is required.


Update (Nov 2018) : In SQL Server 2016 and later second parameter is now the Replica GUID, instead of a memory address. Thanks to Sean Gallardy for pointing this out.

DbMgrPartnerCommitPolicy::SetSyncAndRecoveryPoint: 454AC67E-264A-4958-AD48-ACDC6C292244:4
DbMgrPartnerCommitPolicy::SetSyncAndRecoveryPoint: 454AC67E-264A-4958-AD48-ACDC6C292244:1

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.