維護不可否認性資料庫資料表
Microsoft BizTalk Accelerator for RosettaNet (BTARN) 會將訊息儲存在 BTARNArchive 資料庫的 MessageStorageIn 和 MessageStorageOut 資料表中,以用於非否認性目的。 這些資料表中的許多訊息可能會影響系統效能。 如有必要,您可能需要定期清除和封存這些資料表中的訊息,以維護這些不可否認性資料庫資料表。
資料庫日常維護
當 BTARN 收到訊息時,它一律會將訊息儲存在 MessageStorageIn 資料表中,並一開始將 ToBePurged 欄位設定為 「1」,這表示訊息不需要不可撤銷。 BTARN 接著會解密並解碼訊息,以判斷合約是什麼。 解密和解碼之後,BTARN 會檢查合約,以查看它是否必須儲存訊息以供非拒絕之用。 如果是,它會將 ToBePurged 欄位設定為 「0」,並填入訊息的其他欄位。 如果沒有,它會將 ToBePurged 欄位保留為 「1」,而且不會填入郵件的其他欄位。
BTARN 不會自動刪除 ToBePurged 欄位設定為 「1」 的訊息。 此外,它也不會將以不可否認性目的儲存的訊息封存至其他資料表。 這兩類訊息會在 MessageStorageIn 資料表中逐漸累積,進而影響效能。 在資料庫的例行性維護工作中,您可能需要執行下列動作:
執行包含下列 SQL 語句的預存程式,以刪除 ToBePurged 欄位不等於 「0」 之 MessageStorageIn 資料表中的所有訊息:
delete MessageStorageIn where ToBePurged <> 0
在經過一段適當的時間 (由公司原則所決定) 之後,執行預存程序,以便將不可否認性的訊息封存至不會影響效能的離線資料庫。 您可以使用 MessageStorageIn 資料表中的 TimeCreated 欄位來判斷此期間。 在訊息的非撤銷期間過期之後,您可以使用下列 SQL 語句從封存資料庫刪除訊息, (刪除超過七天的訊息) :
delete <archive table name> where datediff(d, TimeCreated, GetUTCDATA())>7
注意
MessageStorageIn 資料表中的 TimeCreated 欄位是 UTC。
注意
您不應該刪除過去一小時之內收到的內送訊息。
當 BTARN 傳送傳出訊息時,它可以存取非拒絕合約。 如果合約需要不可否認性,BTARN 會將訊息儲存在 MessageStorageOut 資料表中。 如果沒有此要求,則不會將訊息儲存在資料表內。 這表示此表格中不需要 ToBePurged 欄位。 MessageStorageOut 資料表需要的唯一維護動作,便是在經過一段適當的時間後,將不可否認性訊息封存至離線資料庫,並在超過不可否認性時段後刪除每個訊息。 若要如此,可利用下列 SQL 陳述式 (刪除超過七日的訊息):
delete MessageStorageOut where datediff(d, TimeCreated, GetUTCDATA())>7