| Previous | Next |
| MQ_ERROR_ILLEGAL_MQPRIVATEPROPS | MQ_ERROR_NO_MSMQ_SERVERS_ON_GC |
MQ_ERROR_NO_GC_IN_DOMAIN
Operational meaning
When MQ_ERROR_NO_GC_IN_DOMAIN appears, start with the queue operation and its property arrays rather than with a broad repair of the Message Queuing service. The result marks no global catalog can be located for the domain. Forest-wide MSMQ lookup needs a discoverable GC and working DNS/DC locator.
For MQ_ERROR_NO_GC_IN_DOMAIN, global catalog searches and writes to a writable domain naming context have different capabilities. When diagnosing MQ_ERROR_NO_GC_IN_DOMAIN, record whether the operation was discovery, read, create, update, or delete before choosing a domain controller.
When diagnosing MQ_ERROR_NO_GC_IN_DOMAIN, A domain join, a successful DNS lookup, and an LDAP bind are separate checkpoints. In the MQ_ERROR_NO_GC_IN_DOMAIN path, directory errors must be correlated with the exact naming context, object class, GUID, and domain controller used by MSMQ.
Where to draw the boundary
| Subsystem | MSMQ integration with Active Directory Domain Services and the global catalog |
|---|---|
| Decisive boundary | public queue metadata and MSMQ configuration objects depend on directory reachability, schema, class, ownership, and domain credentials |
| Code-specific focus | no global catalog can be located for the domain |
| Primary recovery rule | Verify GC role publication, DNS SRV records, site placement, and network reachability. |
When diagnosing MQ_ERROR_NO_GC_IN_DOMAIN, A queue can exist locally while its public registration or MSMQ configuration object is absent, stale, wrong-class, or visible only on some domain controllers. For MQ_ERROR_NO_GC_IN_DOMAIN, the code-specific boundary is no global catalog can be located for the domain.
Evidence to preserve
- Dns and ldap reachability plus the distinguished name being accessed; associate it explicitly with
MQ_ERROR_NO_GC_IN_DOMAIN. - When diagnosing
MQ_ERROR_NO_GC_IN_DOMAIN, the directory object class, guid, owner, and replication state; capture the value before cleanup or retry changes it. - In the
MQ_ERROR_NO_GC_IN_DOMAINpath, domain/workgroup mode, forest and domain names, and selected domain controller; compare it with a known-good call using the same account and queue type. - For this
MQ_ERROR_NO_GC_IN_DOMAINresult, record the queue path or format name, local/remote placement, transactional flag, caller SID, process build, and UTC correlation ID when they apply.
For MQ_ERROR_NO_GC_IN_DOMAIN, log certificate thumbprints, provider names, SIDs, GUIDs, lengths, and hashes where useful, but do not log private keys, symmetric keys, credentials, or confidential message bodies.
Diagnostic sequence
- Record the unsigned HRESULT,
MQ_ERROR_NO_GC_IN_DOMAIN, and the native API or COM method before a framework replaces it with a generic exception. - When diagnosing
MQ_ERROR_NO_GC_IN_DOMAIN, capture domain/workgroup mode, forest and domain names, and selected domain controller. - Reproduce with the smallest queue/message/property set that still returns
MQ_ERROR_NO_GC_IN_DOMAIN; change one precondition at a time. - For this
MQ_ERROR_NO_GC_IN_DOMAINresult, verify the postcondition after the failed call: queue existence, message presence, directory object state, transaction outcome, or generated output may differ by result. - For
MQ_ERROR_NO_GC_IN_DOMAIN, capture the directory object class, GUID, owner, and replication state. - When diagnosing
MQ_ERROR_NO_GC_IN_DOMAIN, apply the code-specific recovery rule: Verify GC role publication, DNS SRV records, site placement, and network reachability.
Handling and recovery
Verify GC role publication, DNS SRV records, site placement, and network reachability.
When diagnosing MQ_ERROR_NO_GC_IN_DOMAIN, the retry decision must account for side effects that may already exist. In the MQ_ERROR_NO_GC_IN_DOMAIN path, query queue, message, directory, or transaction state first whenever the result leaves completion uncertain.
Nearby failure boundaries
In the MQ_ERROR_NO_GC_IN_DOMAIN path, local private-queue success does not prove that public-queue registration, global catalog discovery, or the required AD DS object is healthy. The specific focus for MQ_ERROR_NO_GC_IN_DOMAIN remains no global catalog can be located for the domain.
- In the
MQ_ERROR_NO_GC_IN_DOMAINpath, restarting MSMQ before collecting evidence can invalidate handles and erase the first useful event; it is a containment action, not a root-cause diagnosis. - For this
MQ_ERROR_NO_GC_IN_DOMAINresult, granting broad queue or certificate permissions may mask the symptom while creating a security defect. ForMQ_ERROR_NO_GC_IN_DOMAIN, test the exact identity and access needed by the operation.
Worked example
An enterprise migration tool encounters MQ_ERROR_NO_GC_IN_DOMAIN. For MQ_ERROR_NO_GC_IN_DOMAIN, it compares DNS, LDAP bind, object class, and replication on the exact domain controller used by MSMQ. When diagnosing MQ_ERROR_NO_GC_IN_DOMAIN, the acceptance test then changes only the decisive precondition and confirms both the HRESULT and the actual queue/message state.
For MQ_ERROR_NO_GC_IN_DOMAIN, include a negative test for the nearest misleading diagnosis so monitoring and user guidance do not collapse distinct MSMQ failures into one alert.
References
- Microsoft: destination queues — source used for the
MQ_ERROR_NO_GC_IN_DOMAINanalysis. - Microsoft: Message Queuing error and information codes — source used for the
MQ_ERROR_NO_GC_IN_DOMAINanalysis. - Microsoft Open Specifications: MSMQ and directory services — source used for the
MQ_ERROR_NO_GC_IN_DOMAINanalysis. - Microsoft Open Specifications: MSMQ protocols overview — source used for the
MQ_ERROR_NO_GC_IN_DOMAINanalysis. - IETF RFC 4511: LDAP protocol — source used for the
MQ_ERROR_NO_GC_IN_DOMAINanalysis.
Looking for a different code? Search another status or error code.