Microsoft BizTalk Accelerator for RosettaNet (BTARN) 在 BTARNArchive 数据库的 MessageStorageIn 和 MessageStorageOut 表中存储消息,以便实现不可否认的目的。 这些表中的许多消息可能会影响系统性能。 你可能希望通过定期清除和存档这些表的消息来维护这些不可抵赖的数据库表。
例程数据库维护
当 BTARN 收到消息时,它始终将消息保存在 MessageStorageIn 表中,最初将 ToBePurged 字段设置为“1”,这表示消息不需要不可否认。 然后,BTARN 解密并解码消息以确定协议是什么。 解密和解码后,BTARN 会检查协议,以确定该协议是否必须保存消息以实现不可否认性目的。 如果是这样,它将 ToBePurged 字段设置为“0”,并填充消息的其他字段。 否则,它将 ToBePurged 字段保留为“1”,并且不会填写邮件的其他字段。
BTARN 不会自动删除设置为“1”的 ToBePurged 字段的消息。 此外,它不会将为了不可否认而保存的消息存档到其他表中。 这两组消息可以在 MessageStorageIn 表中生成并影响性能。 作为数据库的例行维护的一部分,可能需要执行以下作:
运行包含以下 SQL 语句的存储过程,以删除 其 ToBePurged 字段不等于“0”的 MessageStorageIn 表中的所有消息:
delete MessageStorageIn where ToBePurged <> 0
在适当的时间段(公司策略可能规定)之后,运行存储过程,将非否认性消息存档到不会影响性能的脱机数据库。 可以使用 MessageStorageIn 表中的 TimeCreated 字段来确定此时间段。 在邮件的不可否认期过期后,可以使用以下 SQL 语句(删除超过 7 天的消息)从存档数据库中删除消息:
delete <archive table name> where datediff(d, TimeCreated, GetUTCDATA())>7
注释
MessageStorageIn 表中的 TimeCreated 字段采用 UTC 格式。
注释
不应删除不到一个小时的传入消息。
当 BTARN 发送传出消息时,它有权访问不可否认性协议。 如果协议要求非否认,BTARN 会将消息保存在 MessageStorageOut 表中。 否则,它不会将消息保存在表中。 这意味着此表中不需要 ToBePurged 字段。 MessageStorageOut 表所需的唯一维护是经过适当时间后,将不可抵赖消息存档到脱机数据库,并在其不可抵赖期过期后删除每条消息。 为此,可以使用以下 SQL 语句(删除超过 7 天的消息):
delete MessageStorageOut where datediff(d, TimeCreated, GetUTCDATA())>7