Microsoft SQL Serverをリソースマネジャとして登録するには,[リソースマネジャのXA関連オブジェクト]ダイアログボックスを使用します。ダイアログボックスについては,「2.1.3(2) リソースマネジャのXA関連オブジェクトの設定」を参照してください。また,Microsoft SQL Serverを登録するときに必要な「関連オブジェクト名称」などについては,Microsoft SQL ServerのXAインタフェースに関して記載されたマニュアルを参照してください。
[リソースマネジャのXA関連オブジェクト]ダイアログボックスでの指定例を次に示します。
C:¥PROGRA~1¥MICROS~3.NET¥Vc7¥PLATFO~1¥Lib¥xaSwitch.Lib
TP1/LiNKでは,X/OpenのXAインタフェースで定められているリソースマネジャのOpen,Close文字列を設定する必要があります。Open,Close文字列は,[OPEN,CLOSE文字列]ダイアログボックスで設定します。ダイアログボックスについては,「2.1.3(4) Open,Close文字列の指定」を参照してください。Microsoft SQL ServerのOpen,Close文字列として指定する内容については,Microsoft SQL Serverのマニュアルを参照してください。
[OPEN,CLOSE文字列]ダイアログボックスでの指定例を次に示します。
RmRecoveryGuidの値は,グローバルで一意な値を指定します。Microsoft Visual C++が提供する「guidgen」ユーティリティプログラムの「Registry Format」で取得した値(括弧は省く)を指定してください。
Timeoutの値は,XAトランザクションのタイムアウト値をミリ秒単位で指定します。タイムアウト時間が経過すると,Microsoft SQL Server(Windows MSDTC)はXAトランザクションを自動的にロールバックします。また,Open,Close文字列には,すべて同じ値を指定します。詳細は,Microsoft SQL Serverのマニュアルを参照してください。
UAPを作成する場合には,[オブジェクト作成]ダイアログボックスで「%DCDIR%¥spool¥trnrmcmd¥userobj¥」に作成した,トランザクション制御用オブジェクトファイルをリンケージしてください。ダイアログボックスについては,「2.1.3(5) トランザクション制御用オブジェクトファイルの作成」を参照してください。
リソースマネジャにMicrosoft SQL Serverを使用する場合,MSDTCのXAトランザクションを有効にする必要があります。MSDTCのXAトランザクションは,次の手順で有効にできます。
リソースマネジャにMicrosoft SQL Serverを使用する場合,トランザクションサービス定義(%DCDIR%¥conf¥trnファイル)にtrn_extend_functionオペランドを追加します。これによって,次の条件が重なった場合にTP1/LiNKのトランザクションの決着関数はDC_OK(0)ではなく,DCTRNER_HAZARD(-904)またはTX_HAZARD(-4)を返すようにできます。
trn_extend_functionオペランドについて次に示します。
形式
set trn_extend_function = トランザクションサービスの機能拡張レベル
~〈16進数字〉((00000000~00000001))《00000000》
説明
トランザクションサービスの機能の拡張レベルを,次の中から指定します。
次の指定値で示す機能の拡張レベルを複数指定する場合,それぞれの指定値の論理和を指定してください。
関数 | リターン値 | |
---|---|---|
trn_extend_function=00000000の場合 | trn_extend_function=00000001の場合 | |
dc_trn_chained_commit (CBLDCTRN('C-COMMIT')) | DC_OK(00000) | DCTRNER_HAZARD(00904),DCTRNER_HAZARD_NO_BEGIN(00927) |
dc_trn_unchained_commit (CBLDCTRN('U-COMMIT')) | DC_OK(00000) | DCTRNER_HAZARD(00904), |
tx_commit (TXCOMMIT) | TX_OK(TX-OK) | TX_HAZARD(TX-HAZARD),TX_HAZARD_NO_BEGIN(TX-HAZARD-NO-BEGIN) |
dc_mcf_commit (CBLDCMCF('COMMIT')) | DCMCFRTN_00000(00000) | DCMCFRTN_HAZARD(70908) |
定義例
定義の最終行には,改行を入力してください。
# ALL RIGHTS RESERVED, COPYRIGHT (C)1994, HITACHI, LTD.
# LICENSED MATERIAL OF HITACHI,LTD.
# *
# * トランザクションサービス定義
# * 環境名: trn
# *
# TP1/LiNK (trn)
set trn_tran_process_count = 32
set trn_wait_rm_open = continue
trnstring -n MS_SQL_Server ¥
-o "Tm=OpenTP1,RmRecoveryGuid=986D495E-…33E7,Timeout=180¥
000"¥
-c "Tm=OpenTP1,RmRecoveryGuid=986D495E-…33E7,Timeout=180¥
000"¥
-O "Tm=OpenTP1,RmRecoveryGuid=986D495E-…33E7,Timeout=180¥
000"¥
-C "Tm=OpenTP1,RmRecoveryGuid=986D495E-…33E7,Timeout=180¥
000"¥
set trn_extend_function = 00000001
リソースマネジャにMicrosoft SQL Serverを使用する場合,UAP作成時に次の点に注意してください。
また,連鎖型RPCを使用する場合には,次の三つの関数およびサービスルーチンを2回目以降のRPCで発行しないようにしてください。