否認不可データベース テーブルの保守
Microsoft BizTalk Accelerator for RosettaNet (BTARN) は、否認不可の目的で、BTARNArchive データベースの MessageStorageIn テーブルと MessageStorageOut テーブルにメッセージを格納します。 これらのテーブルに含まれるメッセージの多くは、システム パフォーマンスに影響する場合があります。 必要に応じてこれらのテーブルから定期的にメッセージを消去およびアーカイブすることにより、これらの否認不可データベース テーブルを維持することができます。
データベースの定期メンテナンス
BTARN は、メッセージを受信すると常に MessageStorageIn テーブルにメッセージを保存し、最初に ToBePurged フィールドを "1" に設定します。これは、メッセージが否認不可を必要としないことを示します。 その後、BTARN はメッセージの暗号化を解除してデコードし、契約が何であるかを判断します。 復号化とデコードの後、BTARN は同意を調べて、否認を目的としない目的でメッセージを保存する必要があるかどうかを確認します。 その場合は、 ToBePurged フィールドを "0" に設定し、メッセージの他のフィールドに入力します。 そうでない場合は、 ToBePurged フィールドを "1" のままにし、メッセージの他のフィールドには入力しません。
BTARN では、 ToBePurged フィールドが "1" に設定されているメッセージは自動的に削除されません。 さらに、否認不可の目的で保存されているメッセージは他のテーブルにアーカイブされません。 これら 2 つのメッセージ セットは、MessageStorageIn テーブルに蓄積されるため、パフォーマンスが低下する場合があります。 データベースの定期メンテナンスの一環として、次の操作を行う必要があります。
次の SQL ステートメントを含むストアド プロシージャを実行して、 ToBePurged フィールドが "0" と等しくない MessageStorageIn テーブル内のすべてのメッセージを削除します。
delete MessageStorageIn where ToBePurged <> 0
適切な期間 (期間は会社のポリシーに準拠) が経過したら、ストアド プロシージャを実行して、パフォーマンスに影響しないオフライン データベースに否認不可メッセージをアーカイブします。 この期間は、MessageStorageIn テーブルの TimeCreated フィールドを使用して決定できます。 メッセージの否認不可期間が終了したら、次の SQL ステートメント (8 日以上経過したメッセージを削除するためのステートメント) を使用してアーカイブ データベースからメッセージを削除します。
delete <archive table name> where datediff(d, TimeCreated, GetUTCDATA())>7
Note
MessageStorageIn テーブルの TimeCreated フィールドは UTC です。
Note
受信後 1 時間が経過していない着信メッセージは削除しないようにしてください。
BTARN が送信メッセージを送信すると、否認不可契約にアクセスできます。 契約で否認不可が必要な場合、BTARN は MessageStorageOut テーブルにメッセージを保存します。 否認不可が必要ない場合、テーブルにメッセージは保存されません。 つまり、このテーブルに ToBePurged フィールドは 必要ありません。 MessageStorageOut テーブルに対して行うべき唯一の保守作業は、適切な期間経過後に否認不可メッセージをオフライン データベースにアーカイブし、否認不可期間の経過後に各メッセージを削除することです。 これは次の SQL ステートメント (8 日以上経過したメッセージを削除するためのステートメント) で実行できます。
delete MessageStorageOut where datediff(d, TimeCreated, GetUTCDATA())>7