none
リンクサーバーの分散トランザクションについて RRS feed

  • 質問

  • お世話になります。
    リンクサーバーを設定し、リンクサーバー上のテーブルへ値を更新しようとする際、
    Timeoutに達しました。
    または
    分散トランザクションを開始できなかった
    のエラーが発生し、解決の糸口が掴めず困っております。
    力添え頂けませんでしょうか?

    【背景と現象】
    .NETアプリケーションにて、IIS上から、DBServerへアクセスさせています。
    この度、構成を参照系と更新系とに分けて一部DBの負荷分散を目的に、DBServer-Bを増設し、一部参照系をリンクサーバーとして設置しました。
    が、参照系のDBにも一部更新を行う必要があるので、SET XACT_ABORTを挿入した上で更新テストを行った際、問題のエラーが発生しました。

    原因を調査しようと、簡易的に構成を作成したのが、下記【検証結果】となります。
    考えうる設定を行ったつもりですが、何か問題がありますでしょうか?


    【環境】
    DBServerA:172.10.0.100
    DBServerB:172.10.0.101
    共にAWS-EC2(VPC) 
    WindowsSeerver2012
    SQLServer2014 WebEdition

    ※AWS EC2なので、DBServerBはDBServerAのスナップショットから作成
     (つまりコピーイメージから作成)
    ※ホスト名変更済

    【設定内容】
    1.双方で名前解決済
    ・nbtstat -a コマンドで確認済
    ・SELECT @@SERVERNAME AS 'Server Name';で確認済

    2.双方で分散トランザクション設定済
    ・Distributed Tansaction Coordinatorサービス起動
    ・ローカルDTC
    ☑ネットワークDTCアクセス
    ☑受信を許可する
    ☑送信を許可する
    ☑認証を必要としない

    3.MSDTCのレジストリ初期化
    コマンドラインにて
    msdtc -uninstall

    msdtc -install


    4.WindowsF/W設定済
    ☑分散トランザクションコーディネーター
    ☑受信規制(RPC,RPC-EPMAP,TCP受信)
    ☑送信規制(TCP送信)

    5.AWS側F/W設定
    ☑135番TCP
    ☑5000-5100番TCP

    6.その他レジストリ関連
    ・MSDTC\TurnOffRpcSecurity:1
    ・HLM\Software\Microsoft\RPC\
      Ports(REG_MULTI_SZ):5000-5100
      PortsInternetAvailable(REG_SZ):Y
      UseInternetPorts(REG_SZ):Y

    7.SQLServer設定
    ・☑xact abort(サーバープロパティ-接続)
    ・DBServerBにリンクサーバーに追加
    ・リンクサーバー:DBServerA(ホスト名で設定)
    ・サーバー種類:SQLServer
    ・セキュリティ:ログインの現在のセキュリティコンテキストを使用する
    ・その他は初期値のまま

    8.CREATE VIEWで[DBServerA].[DBName].[dbo].[TBL-A]

    9.CREATE SYNONYMでで[DBServerA].[DBName].[dbo].[TBL-B]


    【検証結果】
    (1)select * from TBL-A(OK)
    (2)select * from TBL-B(OK)
    (3)update TBL-A set COL1=1(OK)
    (4)update TBL-B set COL1=1(OK)
    (5)SQL Server Managent studioにてTBL-AのVIEWを開き、COL1を[2]に変更(NG)
     →.NetSqlClientDataProvider
       Timeoutに達しました。操作が完了する前にタイムアウト期間が過ぎたがまたはサーバーが応答していません。

      または
     →分散トランザクションを開始できなかったので、この操作を実行できませんでした
    となる。

    アプリケーションからも同様の現象
    (SET XACT_ABORT有無に関わらず)

    よろしくお願い申し上げます。
    2016年9月22日 10:37