Hitachi

OpenTP1 Version 7 分散アプリケーションサーバ TP1/LiNK 使用の手引


4.1.1 Microsoft SQL Server連携時の環境設定

〈この項の構成〉

(1) Microsoft SQL Serverの登録

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

(2) Microsoft SQL Server連携時のOPEN,CLOSE文字列の設定

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文字列]ダイアログボックスでの指定例を次に示します。

[トランザクションサービス用xa_open関数用文字列(T)]

Tm=OpenTP1,RmRecoveryGuid=986D495E-F4D4-4e80-8B70-9377FFAF33E7,Timeout=180000

[トランザクションサービス用xa_close関数用文字列(S)]

Tm=OpenTP1,RmRecoveryGuid=986D495E-F4D4-4e80-8B70-9377FFAF33E7,Timeout=180000

[ユーザサーバ用xa_open関数用文字列(U)]

Tm=OpenTP1,RmRecoveryGuid=986D495E-F4D4-4e80-8B70-9377FFAF33E7,Timeout=180000

[ユーザサーバ用xa_close関数用文字列(F)]

Tm=OpenTP1,RmRecoveryGuid=986D495E-F4D4-4e80-8B70-9377FFAF33E7,Timeout=180000

RmRecoveryGuidの値は,グローバルで一意な値を指定します。Microsoft Visual C++が提供する「guidgen」ユーティリティプログラムの「Registry Format」で取得した値(括弧は省く)を指定してください。

Timeoutの値は,XAトランザクションのタイムアウト値をミリ秒単位で指定します。タイムアウト時間が経過すると,Microsoft SQL Server(Windows MSDTC)はXAトランザクションを自動的にロールバックします。また,Open,Close文字列には,すべて同じ値を指定します。詳細は,Microsoft SQL Serverのマニュアルを参照してください。

(3) Microsoft SQL Server連携時のUAPのコンパイルとリンケージ

UAPを作成する場合には,[オブジェクト作成]ダイアログボックスで「%DCDIR%\spool\trnrmcmd\userobj\」に作成した,トランザクション制御用オブジェクトファイルをリンケージしてください。ダイアログボックスについては,「2.1.3(5) トランザクション制御用オブジェクトファイルの作成」を参照してください。

(4) MSDTCの設定

リソースマネジャにMicrosoft SQL Serverを使用する場合,MSDTCのXAトランザクションを有効にする必要があります。MSDTCのXAトランザクションは,次の手順で有効にできます。

  1. [スタート]−[プログラム]−[管理ツール]−[コンポーネントサービス]をクリックします。

  2. 管理コンソールで[コンポーネントサービス]−[コンピュータ]−[マイコンピュータ]を選択します。

  3. [操作]−[プロパティ]を選択します。

  4. [MSDTC]タブで[セキュリティの構成]ボタンをクリックします。

  5. [セキュリティの構成]ダイアログボックスで[XAトランザクションを有効にする]チェックボックスをオンにして,[OK]ボタンをクリックします。

  6. MSDTCを再起動します。

注※

使用しているトランザクション形態に合わせ,[トランザクション マネージャー通信]も設定してください。

(5) Microsoft SQL Server連携時に必要な定義

リソースマネジャに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》

説明

トランザクションサービスの機能の拡張レベルを,次の中から指定します。

次の指定値で示す機能の拡張レベルを複数指定する場合,それぞれの指定値の論理和を指定してください。

00000000

トランザクションサービスの機能を拡張しません。

00000001

1相コミット時に,リソースマネジャからXAER_NOTAが返ってきた場合の関数のリターン値はDC_OK(または,TX_OK)ではなくDCTRNER_HAZARD(-904)(または,TX_HAZARD(-4))を返します。

このオペランドは,トランザクションブランチが関連するすべてのOpenTP1ノードのトランザクションサービス定義で指定してください。

トランザクションブランチが関連するすべてのOpenTP1ノードのうち,このオペランドの指定がないノードが一つ以上ある場合,1相コミットでリソースマネジャからXAER_NOTAが返されたときは,ルートトランザクションブランチのリターン値は変更されません。

1相コミットで,リソースマネジャからXAER_NOTAが返された場合の関数のリターン値を次の表に示します。

関数

リターン値

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)

括弧内の英数字は,COBOL言語を使用した場合の関数名およびステータスコードです。

定義例

定義の最終行には,改行を入力してください。

# 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

(6) Microsoft SQL Server連携時の注意事項

リソースマネジャにMicrosoft SQL Serverを使用する場合,UAP作成時に次の点に注意してください。

また,連鎖型RPCを使用する場合には,次の三つの関数およびサービスルーチンを2回目以降のRPCで発行しないようにしてください。