メインコンテンツへスキップ

WKテーブルが固まる。

コメント

6件のコメント

  • y-yoshi

    WKテーブルはメモリテーブルではなくSQL上に作成しているということでしょうか?

    メニュー起動時にSSMSでテーブルが開けないとなると、何らかのロックがかかっている可能性があります。

    メニュープログラムのトランザクションはどうなっていますか?

    メニューのトランザクションが物理でトランザクションをオープンするようになっていると、それ以降呼び出されたプログラムの更新がすべてメニュープログラムのトランザクションに含まれますので、メニューのトランザクションを終了しないとデータコミットされなくなります。

    メニュープログラムでデータの更新等を行っていないのであるならば、メニュープログラムのトランザクション開始を無しにしてみたらいかがでしょうか?

  • tanda

    umemoriさん、

    y-yoshiさんのご指摘はするどいご指摘だと思います。私もそう思います。

    ちなみに、ワークテーブルはMagicのMemoryテーブルを使うか、あるいは遅延トランザクションそのものをワークとして使うかにしたほうがよろしいかと思いますよ。

  • umemori

    yoshiさんのおっしゃる通りです。WKテーブルはSQLなので

    メニュー親プログラム、コールされる入力系プログラムのトランザクションをすべて見直したところ

    改善されました。ありがとうございます。

     

     

     

     

  • tanda

    umemoriさん、

    メニュープログラムは無条件にトランザクション無しで構わないのですが、それ以外のコールプログラムは、トランザクションを無しに設定すると排他制御が効かなくなるので注意が必要ですよ。

  • umemori

    いつもありがとうございます。承知しました。

  • y-yoshi

    お役に立てたようで何よりです。

    私も昔同じことに引っかかって泣きを見ましたので…。

    障害発生時のロールバックの為のトランザクションの開き方にはいつも頭を悩ませてます。

    ちなみにtandaさんのおっしゃる通り、特段の理由が無ければ一時テーブルはmemoryを使うか遅延トランを使った方がいいですよね。

    遅延は若干扱いが難しいこともあって、出始めのころメモリテーブルを作るのをやめたくて実験的に遅延使ったら大火傷したことがありましたが、仕組みを覚えれば便利かと思います。

サインインしてコメントを残してください。