我们的一个表有一个用于保存故障排除信息的列,它是一个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;
答案 0 :(得分:0)
为什么不将它作为夜间工作安排在数据库维护工作中,而不是每次插入时都将其作为触发器运行?
答案 1 :(得分:0)
通常触发器用于在关于记录更改的主要操作(插入,更新,删除)之后执行操作。
如果您没有执行任何插入,那么您使用TransactionXML的CCResponse remail不会为空。
而不是触发器,恕我直言,我使用计划的工作。