次の方法で共有


COM+ CRM 監視インターフェイス

CRM インフラストラクチャには、特定のサーバー アプリケーション内の CRM の監視に使用できる一連のインターフェイスが用意されています。 監視インターフェイスにアクセスするには、サーバー アプリケーション内で実行されているコンポーネントで、最初に CRM 復旧クラークと呼ばれる専用の CRM クラークを作成する必要があります。

CRM の通常の使用では、トランザクションは短時間であることが予想されるため、CRM ワーカーと CRM コンペンセーターが存在するのは短時間 (通常は最大で数秒間) です。 したがって、監視インターフェイスは、特定の時点で実行中の CRM の状態のスナップショットを提供するように設計されています。 いずれかの CRM で問題が発生している場合は、監視インタフェースを使用して、問題のある CRM を特定し、そのログ記録を検査して、必要であればそのトランザクションを中止することができます。

3 つの CRM 監視インターフェイスとその動作の説明を次に示します。

Interface 説明
ICrmMonitor
ICrmMonitor::GetClerks を使用すると、サーバー アプリケーション内のアクティブな CRM クラークの現在のセットのスナップショットを取得できます。 ここから、対象の特定の CRM クラーク コレクション オブジェクトを特定し、トランザクションの現在の状態や CRM によって書き込まれたログ レコードなどを、照会することができます。
監視ツールが対象となるクラークを特定すると、ICrmMonitor::HoldClerk を呼び出して、その特定のクラークで ICrmMonitorLogRecords インターフェイスを取得します。 この時点で、監視ツールはそのクラークへの参照を保持しており、トランザクションが完了すると、クラークはメモリに保持され、監視ツールが完了するまで解放されません。
ICrmMonitorClerks
このインターフェイスを使用すると、クラーク コレクション オブジェクトを参照して、取得された時点のクラーク コレクションの状態に関する情報を参照できます。 この情報には、クラークの数、クラークが使用する CRM コンペンセータの ProgID、CRM コンペンセータの登録時に提供された説明 (ICrmLogControl::RegisterCompensator を使用)、トランザクションの作業単位 ID、およびアクティビティ ID が含まれます。 また、個々のクラークは、"クラーク インスタンス CLSID" によって一意に識別されます。これは、通常使われる用語の COM CLSID ではなく、この特定のクラークを有効期間中識別する一意の GUID です。
ICrmMonitorLogRecords
このインターフェイスを使用すると、トランザクションの現在の状態を照会したり、この CRM クラークが書き込むログ レコードの数を確認したり、実際のログ レコード データを取得したりできます。 ログ レコードは、(ICrmLogControl を使用して) 最初に書き込まれたのと同じ形式で ICrmMonitorLogRecords インターフェイスから提供されます。 さらに、汎用監視ツールを使用して表示できるように、ログ レコードを表示可能な形式に変換するために、必要に応じて ICrmMonitorLogRecords を実装できます。
ICrmMonitorLogRecords は CRM クラークに直接実装されるため、ICrmLogControl (これも CRM クラークに実装されています) の QueryInterface を使用できます。 これを使用して、必要に応じてトランザクションを直接中止することができます (ICrmLogControl::ForceTransactionToAbort)。

COM+ 補正リソース マネージャーの概念