次の方法で共有


Microsoft Dynamics AX の AOS サーバーのアプリケーション ログで、セッション ID に関連付けられているユーザー ID をエラーで見つける方法

適用対象: Microsoft Dynamics AX 2009
元の KB 番号: 953375

まとめ

この記事では、Microsoft Dynamics AX のアプリケーション ログに次のエラー メッセージが表示されることを説明します。

RPC エラー: セッション <SessionID で RPC 例外 1726 が発生しました>

また、この記事では、エラー メッセージのセッション ID をユーザー ID に関連付ける方法についても説明します。

詳細

Microsoft Dynamics AX 2009 の次のシナリオについて考えてみましょう。

AOS サーバーでメモリ使用量が増えることがわかります。 次に、AOS サーバーのアプリケーション ログを確認して、原因を特定します。 このシナリオでは、イベントがアプリケーション ログに記録されていることがわかります。

このシナリオでは、セッション ID に関連付けられている Microsoft Dynamics AX ユーザー ID をエラー メッセージで見つけることができます。 また、ビジネス プロセスと、問題が発生した時点でエンド ユーザーが何を行っていたかを理解する必要があります。

問題の原因がエンド ユーザーかビジネス プロセスかを判断するには、AOS サーバー上のアプリケーション ログのエラー メッセージのセッション ID を使用します。 その後、セッション ID を Microsoft Dynamics AX データベースの sysuserlog テーブルに関連付けることができます。 これを行うには、次の手順を実行します。

  1. SQL クエリ アナライザーまたは SQL Server Management Studio で SQL ステートメントを実行します。 たとえば、SQL Query Analyzer または SQL Server Management Studio で次の SQL ステートメントを実行します。

    select * from sysuserlog where sessionid = <SessionID> and createddate > '2007/7/17' order by createddate desc
    

    • このスクリプトでは、 <SessionID> は、アプリケーション ログのエラー メッセージ内の実際のセッション ID のプレースホルダーです。
    • このスクリプトでは、エラー メッセージの実際の日付の 1 日または数日前 (>) より大きい createddate を使用します。 その後、実際のエラー メッセージの日付ではなく、エンド ユーザーが Microsoft Dynamics AX にログインした日付を取得できます。
  2. ステートメントの結果を表示します。 たとえば、次のステートメントの結果には 3 つのレコードがあります。

    USERID タイプ コンピューター名 クライアントタイプ ログアウト時間 ログアウト日付 BUILDNUM SESSIONID 処理終了OK 作成日 作成日時
    管理者 0 MACHINE1 1 57511 7/17/2007 2500.275 10 1 7/17/2007 37944
    マーク 0 MACHINE3 1 0 1/1/1900 2500.275 10 0 7/19/2007 75080
    John 0 MACHINE2 3 41200 7/18/2007 2500.275 10 1 7/20/2007 40326
  3. ステートメントの結果を使用して、エラー メッセージのセッション ID に関連付けられているユーザーを特定します。 これを行うには、次の手順を実行します。

    1. CLIENTTYPE 列を調べて接続の種類を確認し、TERMINATEDOK 列を調べて、クラッシュしたクライアントを確認します。 行の TERMINATEDOK 列に 0 (ゼロ) と表示され、 LOGOUTTIME 列にログオフ時間が記録されていない場合は、クライアントがクラッシュしたか、エンド ユーザーが Ctrl + Alt + Del を使用してクライアント プロセスを終了したことを意味します。

      • セッション ID は再利用できるため 、SESSIONID 列は使用しないでください。

      • sysuserlog テーブルの ClientType 列の値は次のとおりです。

        価値 値が表す意味
        0 Com オブジェクト
        1 クライアント
        2 [サーバー]
        3 ワーカー スレッド

        また、sysuserlog テーブルに関するこの情報は、アプリケーション オブジェクト ツリー (AOT) の次のオブジェクトにあります。
        \System Documentation \ Enums \ClientType

    2. クラッシュしたクライアントの USERID 列と COMPUTERNAME 列の値をメモします。 次に、このクライアントで何が発生していて、その時点でどのユーザーがクライアントを使用していたかを確認します。

    手順 1 の例では、ログオフ時間がなく、結果の 2 番目のレコードの TERMINATEDOK 値は 0 です。 そのため、Mark と MACHINE3 のユーザー ID は、アプリケーション ログのエラー メッセージに関連付けられているエンド ユーザーである可能性が最も高いです。 エンド ユーザーに問い合わせて、問題が発生したかどうか、およびエンド ユーザーが発生した問題の種類を確認する必要があります。

より新しい接続またはアクティブな接続を確認するには、 sysclientsessions テーブルを 確認します。 また、セッション ID が再利用される可能性があることに注意してください。 そのため、セッション ID を使用する現在のユーザーが、アプリケーション ログのエラー メッセージに関連付けられているエンド ユーザーではない可能性があります。