On occasion, an application can issue a request on a connection that is in a state that does not allow migration. See “Criteria for migration”.
For example, a connection cannot migrate if an application connects to an instance, and before issuing the request to perform an operation on the transaction, uses the connection to create a temporary table. If such a connection is to a nonowner instance, Adaptive Server cannot process the request, and the application receives a protocol-specific error code. In the case of X/Open-XA protocols, the TM receives XAER_RMERR as a return status, which indicates that the cluster has not processed the XA command. The transaction has not rolled back; it is still running on the owner instance.
Address this error by reissuing the command on a different connection. XAER_RMERR is a generic error that is returned in many error situations. You can use the functions xact_connmigrate_check and xact_owner_instance to determine if the XAER_RMERR error is due to a connection that cannot migrate. See “Configuration and system issues”.
To avoid XAER_RMERR errors due to nonmigratable connections:
Do not use the connections used for XA applications for general use, as a connection can be left in a state that does not allow it to migrate.
Use trace flag 3960 to avoid an XAER_RMERR error for commit and rollback commands issued on nonmigratable connections to nonowner instances. When you use trace flag 3960, the nonowner instance acts as proxy between the TM and the owner instance by forwarding the request from the TM to the owner instance, and then sending the reply to the TM.