0

我们的一个表有一个用于保存故障排除信息的列,它是一种 XML 数据类型,与行相关,因此如果出现问题,我们可以快速查看该事务发生的所有事情。这已成为一个问题,因为它会急剧增加数据库大小。一个月后通常不需要检索此信息,这是在浪费宝贵的空间。

我们的解决方案是使用插入触发器在一个月大后将 XML 日志列清空。我们担心的是,这是否会影响表的性能,足以引起注意并可能导致问题?

以下是我们正在努力实现的目标:

CREATE PROCEDURE [dbo].[sp_ClearTransactionXmlLogs]
AS
    UPDATE [dbo].[CCResponse]
       SET [TransactionXML] = NULL
     WHERE [DateSaved] < DATEADD(MONTH,-1,GETDATE())
       AND [TransactionXML] IS NOT NULL; 

CREATE TRIGGER [dbo].[tr_ClearTransactionXmlLogs]
ON [dbo].[CCResponse]
AFTER INSERT
AS EXEC sp_ClearTransactionXmlLogs;
4

2 回答 2

0

与其在每次插入发生时都将其作为触发器运行,不如将其安排为夜间作业,作为数据库维护作业的一部分?

于 2013-07-18T18:51:12.713 回答
0

通常触发器用于在记录发生更改的主要操作(插入、更新、删除)之后执行操作。

如果您不执行任何插入,则带有 TransactionXML 的 CCResponse 重发邮件不为空。

恕我直言,我没有使用触发器,而是使用计划好的工作。

于 2013-07-18T21:19:05.283 回答