维护不可否认性数据库表
Microsoft BizTalk Accelerator for RosettaNet (BTARN) 出于不可否认目的将消息存储在 BTARNArchive 数据库的 MessageStorageIn 和 MessageStorageOut 表中。 这些表中的许多消息都可能影响系统的性能。 可以根据需要对不可否认性数据库表中的消息定期进行清除和存档,以便维护这些数据库表。
日常数据库维护
当 BTARN 收到消息时,它始终将消息保存在 MessageStorageIn 表中,并最初将 ToBePurged 字段设置为“1”,这表示该消息不需要不可否认性。 然后,BTARN 解密和解码消息以确定协议是什么。 解密和解码后,BTARN 会检查协议,以查看它是否必须保存消息以用于不可否认性目的。 如果是这样,它将 ToBePurged 字段设置为“0”,并填充消息的其他字段。 否则,它将 ToBePurged 字段保留为“1”,并且不会填充邮件的其他字段。
如果 ToBePurged 字段设置为“1”,BTARN 不会自动删除消息。 而且,BTARN 不会将那些为确保不可否认性而保存的消息存档到其他表中。 这两个消息集可以在 MessageStorageIn 表中建立,但影响性能。 您可能要执行以下数据库的日常维护:
运行包含以下 SQL 语句的存储过程,删除 MessageStorageIn 表中 ToBePurged 字段不等于“0”的所有消息:
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