この項では、xa_open()でオープンされるXA接続に関連付けられているODBCハンドルを使用してODBC関数をコールする際に注意すべきTimesTenの問題について説明します(「XA接続からのODBCハンドルの取得」を参照)。
処理を簡素化し、矛盾の発生を回避するために、xa_open()は、XLA接続をオープンするときに、AUTOCOMMITを自動的にOFFにします。
その後、ローカル・トランザクションの処理の実行中に、AUTOCOMMITがONまたはOFFにする場合がありますが、xa_start()をコールしてグローバル・トランザクション・ブランチでの処理を開始する前には、OFFにする必要があります。AUTOCOMMITがONの場合、xa_start() をコールするとエラーが返されます。
Error 11030 - "Autocommit must be turned off when working on global (XA) transactions"
グローバル・トランザクション・ブランチでの処理が開始した(xa_start()がコールされた)後、その処理が(xa_end()をコールして)完了するまで、AUTOCOMMITをONにできない場合があります。この場合、AUTOCOMMITをONにしようとすると、エラーが発生します。
Error 11030 - "Autocommit must be turned off when working on global (XA) transactions"
(xa_start()をコールして)グローバル・トランザクション・ブランチでの処理が開始した後、SQLTransact()を使用してローカルのCOMMITまたはROLLBACKを実行しようとすると、エラーが発生します。
Error 11031- "Illegal combination of local transaction and global (XA) transaction"
xa_end()をコールしてグローバル・トランザクション・ブランチでの処理を終了する前に、SQLFreeStmt(hstmt, SQL_CLOSE) を使用して、オープンしているすべての文カーソルをクローズする必要があります。
Error 11032 - "XA request failed due to open cursors"