[FIX することはできません情報にアクセス、メッセージ ボックス データベースまたは追跡メッセージ内のメッセージで BizTalk Server 2004 でアーカイブ

文書翻訳 文書翻訳
文書番号: 838454 - 対象製品
すべて展開する | すべて折りたたむ

目次

現象

Microsoft BizTalk メッセージ ボックス データベースにアーカイブまたは履歴メッセージにアクセスすることがあります。 Microsoft BizTalk Server 2004 では、およびコンテキストの取得や個々 のメッセージに関するペイロード データ メッセージの一覧を列挙する機能が提供されていません。

この修正プログラムは、新しい MessageArchive オブジェクトを追加します。 MessageArchive オブジェクトは、またはカスタムのアーカイブ データベース、メッセージ ボックス データベースには、履歴メッセージ本文で、列挙型を取得する機能を公開します。

メモ この修正プログラムは Microsoft BizTalk Server 2004 Service Pack 1 に含まれます。

解決方法

Service Pack 情報

この問題を解決するには、Microsoft BizTalk Server 2004 の最新のサービス パックの入手します。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください:
888751BizTalk Server 2004 Service Pack の入手方法

修正プログラムについて

サポートされている修正プログラムが Microsoft から提供されています。 ただし、ことを目的としたこの修正プログラムものですこの資料に記載されている問題のみを修正します。 この修正プログラムのみシステムに適用この特定の問題が発生しています。 この修正プログラム テストを受ける可能性があります。 そのため場合この問題で深刻な影響を受けていないお勧めしますこの修正プログラムを含む、次回ソフトウェアの更新されるまで待つことです。

修正プログラムをダウンロードできる場合はこの資料の先頭に「修正プログラムのダウンロード」セクションです。 このセクションが表示されていない場合、は、マイクロソフト カスタマーサービス & サポート修正プログラムを入手するを問い合わせてください。

メモ 追加問題が発生する場合は、個別のサービス要求を作成した任意のトラブルシューティングが必要な場合。 通常のサポート料金が追加の質問およびこの特定の修正プログラムの対象とならない問題について適用されます。 一覧については、完了マイクロソフト カスタマーサービス & サポートの電話番号のまたは個別のサービス要求を作成する、次のマイクロソフト Web サイトを参照してください。
http://support.microsoft.com/contactus/?ws=support
メモ 「修正プログラムのダウンロード」フォームには、修正プログラムが利用する言語が表示されます。 お使いの言語が表示されない場合、修正プログラムがその言語に対応しないのでは。

前提条件

必要条件はありません

再起動の要件

この修正プログラムの適用後、コンピュータを再起動する必要はありません

修正プログラム置き換えに関する情報

この修正プログラムは、他の修正プログラム置き換えられるされません。

ファイル情報

英語版のこの修正プログラムにファイルの属性 (またはそれ以降のファイル属性) 次の表は、されている可能性もします。 日付およびこれらのファイルの時間で世界協定時刻 (UTC) と記載します。 各ファイルの日付および時刻は、世界協定時刻 (UTC) で示されています。 UTC と現地時刻の差を検索するには、コントロール パネルの [日付と時刻 タイム ゾーン タブを使用します。
   Date        Time    Version     Size       File name
   --------------------------------------------------------------------------------------
   08-Jul-2004  22:15  3.0.5320.0    144,896  Btshttpreceive.dll
   08-Jul-2004  22:15  3.0.5320.0  1,026,048  Btsmsgcore.dll
   08-Jul-2004  22:53  3.0.5320.0     32,768  Microsoft.biztalk.cachingservice.dll
   08-Jul-2004  22:50  3.0.5320.0    221,184  Microsoft.biztalk.flatfileextension.dll
   08-Jul-2004  22:48  3.0.5320.0    729,088  Microsoft.biztalk.globalpropertyschemas.dll
   08-Jul-2004  22:48  3.0.5320.0     69,632  Microsoft.biztalk.httptransport.dll
   08-Jul-2004  22:42  3.0.5320.0     77,824  Microsoft.biztalk.messageboxom.dll
   08-Jul-2004  22:50  3.0.5320.0     49,152  Microsoft.biztalk.messaging.dll
   08-Jul-2004  22:53  3.0.5320.0    217,088  Microsoft.biztalk.pipeline.dll
   08-Jul-2004  21:46                145,598  Msgboxlogic.sql
   08-Jul-2004  21:46                 12,158  Msgbox_tracking_schema.sql

メモ ファイルの依存関係のためこれらのファイルに含まれている最新修正プログラムが追加ファイルされていること。

状況

マイクロソフトとして認識していますこの問題を記載されているいるマイクロソフト製品の問題。この問題は、BizTalk Server 2004 Service Pack 1 で修正されました。

詳細

メッセージ本文のデータをアーカイブする方法

メッセージ ボックス データベースに Tracking_Spool1 Tracking_Spool2 テーブル内のメッセージ本文のデータをアーカイブする Microsoft.BizTalk.MessageBoxOM.dll ファイルを参照できます。 これを行うには、次の手順を実行します。
  1. Microsoft.BizTalk.MessageBoxOM.dll ファイルを参照します。 Microsoft.BizTalk.MessageBoxOM.dll ファイルが、グローバル アセンブリ キャッシュ (GAC) 内にあります。 Microsoft Visual Studio .NET 2003年のプロジェクトで GAC にあるコンポーネントに参照を追加することはできません。 Visual Studio .NET 2003年のプロジェクトに Microsoft.BizTalk.MessageBoxOM.dll ファイルを参照するには、いずれか、次の方法の使用します。
    • 方法 1: GAC から、Microsoft.BizTalk.MessageBoxOM.dll ファイルを抽出する

      GAC からには、Microsoft.BizTalk.MessageBoxOM.dll ファイルを抽出をするには、コマンド プロンプトで次のコマンドを実行します。 このコマンドで DestinationPath ハード_ディスクのファイルの場所を表します。 たとえば、Microsoft.BizTalk.MessageBoxOM.dll ファイルを Visual Studio .NET 2003年プロジェクト用のファイルを含むフォルダーに抽出するのに次のコマンドを使用することができます。
      コピー %systemroot%\assembly\GAC\Microsoft.BizTalk.MessageBoxOM\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.MessageBoxOM.dll DestinationPath
    • 方法 2: 手動で、Visual Studio .NET 2003年のプロジェクト ファイルを編集

      参照は GAC にあるコンポーネントを追加するには、手動でのテキスト エディターで、Visual Studio .NET 2003年のプロジェクト ファイルを編集します。 たとえば、.csproj と.btproj のファイルはプロジェクト ファイルです。 参照 の要素に次の例をプロジェクト ファイルに追加します
      Name = "Microsoft.BizTalk.MessageBoxOM"
      AssemblyName = "Microsoft.BizTalk.MessageBoxOM"
      HintPath = "<SystemRoot>\assembly\GAC\Microsoft.BizTalk.MessageBoxOM\3.0.1.0__31bf3856ad364e35\Microsoft.BizTalk.MessageBoxOM.dll"
  2. Visual Studio .NET 2003年でコンソール アプリケーションを作成します。 コンソール アプリケーションでし、次のコンポーネントへの参照を追加します。
    • Microsoft.biztalk.messageboxom.dll

      メモ 手順 1 で、ハード_ディスク上の場所、ファイルを抽出する場合は、Microsoft.biztalk.messageboxom.dll ファイルに参照を追加のみ。
    • \Microsoft BizTalk Server の 2004\Microsoft.BizTalk.Messaging.dll
    • \Microsoft BizTalk Server の 2004\Microsoft.BizTalk.Pipeline.dll
    • System.xml
  3. メッセージ本文のデータをアーカイブするためのコンソール アプリケーションにコードを追加します。 アプリケーションをコンパイルします。 たとえば、次の Microsoft Visual C# コード例のようなコードを使用します。
    using System;
    using System.IO;
    using Microsoft.BizTalk.Message.Interop;
    using Microsoft.BizTalk.MessageBoxOM;
    using System.Collections;
    using System.Diagnostics;
    
    namespace ConsoleApplication1
    {
    /// <summary>
    /// Summary description for Class1.
    /// </summary>
    class Class1
    {
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    MessageArchive archive = new MessageArchive();
    archive.ConnectionString = "Persist Security Info=False;Integrated Security=SSPI;database=BizTalkMsgboxDb;server=."
    
    foreach (IBaseMessage msg in archive.Messages)
    {
    int cnt = msg.PartCount;
    UInt64 lSize;
    bool fImplemented;
    msg.GetSize(out lSize, out fImplemented);
    //Trace.WriteLine("Message ID: " + msg.MessageID.ToString());
    //Trace.WriteLine("Message Size: " + lSize.ToString());
    Console.WriteLine("Message ID: " + msg.MessageID.ToString());
    Console.WriteLine("Message Size: " + lSize.ToString());
    String partName;
    IBaseMessagePart part = msg.GetPartByIndex(0, out partName);
    Stream data = part.Data;
    string contentType = part.ContentType;
    string charset = part.Charset;
    
    
    //byte[] arr = new byte[data.Length];
    //data.Read(arr, 0, (int)data.Length);
    //file.Write(arr, 0, (int)data.Length);
    
    FileStream file = new FileStream(@"<full path of where you want to store the tracked messages>\" + msg.MessageID + ".xml", FileMode.Create);
    
    byte[] arr = new byte[1024];
    int bytesRead = 0;
    while ( (bytesRead = data.Read(arr, 0, 1024) ) > 0) 
    {
    file.Write(arr, 0, bytesRead);
    if (bytesRead < 1024)
    break;
    }
    
    file.Close();
    
    }
    
    archive.Dispose(); 
    }
    }
    }
  4. コンソール アプリケーションを実行します。 コンソール アプリケーション、実行するとき、コンソール アプリケーション </a0> は、メッセージ ボックス データベースにアクティブでないテーブルから追跡メッセージ本文のデータを取得します。 アクティブでないテーブルは、 Tracking_Spool1 の表に、または、 Tracking_Spool2 テーブルです。 MessageArchive オブジェクトはアクティブなテーブルをアクセスできません。

    既定では、 Tracking_Spool1 の表は、作業中のテーブルです。 したがって、データは返されません初めてコンソール アプリケーションを実行すること。 作業中のテーブルのテーブルの Tracking_Spool2 には、SQL Server で TrackingSpool_Cleanup_BizTalkMsgBoxDb ジョブを実行します。

    メモ 既定では、TrackingSpool_Cleanup_BizTalkMsgBoxDb ジョブが可能にしません。 TrackingSpool_Cleanup_BizTalkMsgBoxDb ジョブが削除されるメッセージの本文データ削除されます。

    TrackingSpool_Cleanup_BizTalkMsgBoxDb ジョブを実行すた後には、 Tracking_Spool1 テーブル内のメッセージ本体データをアーカイブするコンソール アプリケーション実行します。

    メモ TrackingSpool_Cleanup_BizTalkMsgBoxDb ジョブを再度実行する前にコンソール アプリケーションを実行する必要がありますので、TrackingSpool_Cleanup_BizTalkMsgBoxDb ジョブは、非アクティブからメッセージ本文のデータを削除、

    たとえば、次の手順、メッセージ ボックス データベース内のメッセージ本文のデータをアーカイブするを実行します。
    1. メッセージ本文のデータのアーカイブのスケジュールを設定します。 たとえば場合 2 週間ごとに 1 回を TrackingSpool_Cleanup_BizTalkMsgBoxDb ジョブを実行する必要があります追跡メッセージ本文のデータのデータの 2 週間です。
    2. TrackingSpool_Cleanup_BizTalkMsgBoxDb ジョブを実行します。 このジョブを実行する最初の時間、 Tracking_Spool2 の表は作業中のテーブルとして表示します。 Tracking_Spool2 テーブルが空です。 したがって、データが失われるありません。
    3. Tracking_Spool1 テーブルに格納されているメッセージ本体データ アーカイブするコンソール アプリケーション実行します。
    4. もう一度メッセージ本文のデータをアーカイブしたい場合は、TrackingSpool_Cleanup_BizTalkMsgBoxDb ジョブを実行します。 このジョブはデータを Tracking_Spool1 テーブルであり、 Tracking_Spool1 テーブルをアクティブとしてマークを削除します。
    5. Tracking_Spool2 テーブルに格納されているメッセージ本体データ アーカイブするコンソール アプリケーション実行します。
    6. 手順を繰り返して 4A 4e に従ってをステップ 4A で確立する、スケジュールします。
    TrackingSpool_Cleanup_BizTalkMsgBoxDb ジョブに関するについては、資料の「サポート技術情報」(Microsoft Knowledge Base) を表示する次の資料番号をクリック。
    907661BiztalkMsgBoxDb データベース内の Tracking_Spool1 または Tracking_Spool2 のテーブルに BizTalk Server 2004 で非常に大きくなります。

MessageArchive オブジェクト インターフェイス

MessageArchive オブジェクトには、次のインターフェイス実装されています。
    public int CommandTimeout
    • の説明: このインターフェイスを使用ユーザーを取得し、基になる SQL 接続に関連付けられているタイムアウトを設定します。
    • の境界条件: タイムアウトまたは 0 があります。 最大のタイムアウトは、1 時間になります。 0 は、無限のタイムアウトを示します。
    • エラーの場合: 無効な値は ArgumentOutOfRangeException 例外が発生します。

    public string ConnectionString
    • の説明: このインターフェイスを使用ユーザーできますを取得し、基になるアーカイブ データベースの接続文字列を設定します。
    • の境界条件: 文字列値を null にすることはできず、空の文字列をできませんする必要があります。 1 回の接続を正常に設定した後、接続のプロパティをリセットすることはできません。
    • エラーの場合: null 文字列または 0 (0) の長さの文字列で ArgumentException 例外をが。 既に設定された後にプロパティを設定すると、 InvalidOperationException 例外が。 文字列は有効な接続ではない場合、は、接続の例外は生成 SQL します。

    public int BatchSize
    • の説明: このインターフェイスを使用、ユーザーが取得したりデータベースから取得するデータのバッチのサイズを設定できます。 この操作によって、BizTalk Server は大量のメモリを使用一度にできなくなります。 既定値は 50 です。
    • の境界条件: BatchSize、または 0 になければなりません。 0 の場合、 MessageArchive オブジェクトは一致の最大数まで、すべてデータを取得する BatchSize。 メモリをより多くの読み込みに意味ことはありません、最大 BatchSize は 1000年です。
    • エラーの場合: 許容範囲外にある BatchSizes ArgumentOutOfRangeException 例外が発生します。

    public int MaxMatches
    • の説明: このインターフェイスを使用ユーザーできますを取得し、列挙体に対して取得されるメッセージの最大数を設定します。 このインターフェイスはインターフェイス MaxMatches、 MoveNext メソッド、列挙型の前にメッセージの合計数がで false 返します BatchSize によって異なります。
    • の境界条件: MaxMatches または 0 になければなりません。 値が 0 のすべてのメッセージを取得する手段です。
    • エラーの場合: MaxMatches の値が 0 より小さい場合、は、 ArgumentOutOfRangeException 例外が生成されます。

    public DateTime From
    • の説明: このインターフェイスによって、ユーザーは、一連のことを取得する、特定の日付と時刻範囲に基づいてメッセージ フィルターできます。 このプロパティを設定、 MessageArchive オブジェクトする必要があります、指定した日付と時刻以降に公開されているメッセージを取得だけことを示しています。
    • の境界条件: Until 時間が既に指定されている場合、このから時間する必要がありますか Until 時刻より前に同じには。
    • エラーの場合: 時刻が Until 時刻より後にある場合、 ArgumentException 例外が生成されます。

    public DateTime Until
    • の説明: このインターフェイスによって、ユーザーは、一連のことを取得する、特定の日付と時刻範囲に基づいてメッセージ フィルターできます。 このプロパティを設定、 MessageArchive オブジェクトは以上指定時刻より前に公開されているメッセージを取得だけを示しています。
    • の境界条件: 時間が既に指定されている場合、この Until 時間する必要がありますから時刻以後に等しいには。
    • エラーの場合: Until 時間が、開始前に場合、は、 ArgumentException の例外が生成されます。

    public IEnumerable Messages
    • の説明: このインターフェイスを使用には、ユーザー インターフェイス経由ですべて、メッセージを列挙することができますを取得できます。 列挙型 Count プロパティが指定されていないためを使用します。
    • の境界条件: このインターフェイスは、パラメーターをとりません。
    • エラーの場合: 接続がまだ設定されていない場合、は、 InvalidOperationException 例外が生成されます。 その他のエラーをすべての SQL 接続の問題によって原因が。
    • メッセージの列挙型 ArchivedMessage のオブジェクトを返します。 これらのオブジェクトは、IBaseMessage インターフェイスにキャストできます。 IBaseMessage の詳細については、Microsoft BizTalk Server 2004 オンライン ドキュメントを参照してください。

すべて、次の関数またはメソッド MessageArchive オブジェクトでサポートされていないされ InvalidOperationException 例外が生成されます。
  • public void AddPart(string partName, IBaseMessagePart part, [MarshalAs(UnmanagedType.Bool)] bool bBody)
  • public IBaseMessagePart GetPart(string partName)
  • public void RemovePart(string partName)
  • public Exception GetErrorInfo()
  • public void SetErrorInfo(Exception errInfo)
この修正プログラムに含めるにはいくつかの新しいプロパティを BizTalk Server ソリューションで使用できます。
  • AdapterReceiveCompleteTime プロパティは、メッセージは、アダプターから受信すると、受信する前にパイプライン処理を開始、メッセージ作成されます。
  • AdapterTransmitBeginTime プロパティは、アダプターを開始、メッセージを送信する前に作成されます。
  • AdapterTransmitCompleteTime プロパティは、アダプターが正常に、メッセージを送信後に作成されます。 このプロパティには、BizTalk メッセージ キュー アダプター (MSMQT) はできません。
これらのプロパティは、次の名前空間に属する: 3 つすべてのプロパティが
http://schemas.microsoft.com/BizTalk/2003/messagetracking-properties
VT_DATE (または日付と時刻) と入力します。

関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください:
824684マイクロソフトのソフトウェアの更新で使用される一般的な用語の説明

プロパティ

文書番号: 838454 - 最終更新日: 2006年12月29日 - リビジョン: 4.2
この資料は以下の製品について記述したものです。
  • Microsoft BizTalk Server 2004 Standard Edition
  • Microsoft BizTalk Server 2004 Partner Edition
  • Microsoft BizTalk Server 2004 Enterprise Edition
  • Microsoft BizTalk Server 2004 Developer Edition
キーワード:?
kbbug kbfix kbqfe kbbiztalk2004presp1fix kbbiztalk2004sp1fix kbhotfixserver kbbiztalk2004-2006swept kbautohotfix kbmt KB838454 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:838454
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com