Sql server 2008 已删除记录的日志计数

Sql server 2008 已删除记录的日志计数,sql-server-2008,tsql,Sql Server 2008,Tsql,当我试着运行这个 DECLARE @by varchar(20) = 'Myself' INSERT INTO dbo.MiscLog(LogType, onTable, Message, CreateBy) SELECT 'Info', 'dbo.History', 'There are ' + CONVERT(varchar(20), COUNT(ID)) + ' old records being purged.', @by FROM

当我试着运行这个

DECLARE @by varchar(20) = 'Myself'

INSERT INTO dbo.MiscLog(LogType, onTable, Message, CreateBy)
   SELECT 
      'Info', 'dbo.History', 
      'There are ' + CONVERT(varchar(20), COUNT(ID)) + ' old records being purged.', @by
   FROM 
       (DELETE FROM dbo.History
        OUTPUT deleted.ID
        WHERE keyDate < dateadd(y, -7, getDate())) H
我明白了

味精5322,第15级,状态1,第5行 当FROM子句包含嵌套的INSERT、UPDATE、DELETE或MERGE语句时,SELECT子句中不允许使用聚合函数


尝试将已删除记录的副本插入临时表,然后在临时表上运行计数聚合

SELECT *
INTO #tempLog
   FROM 
       (DELETE FROM dbo.History
        OUTPUT deleted.ID
        WHERE keyDate < dateadd(y, -7, getDate())) H

INSERT INTO dbo.MiscLog(LogType, onTable, Message, CreateBy)
   SELECT 
      'Info', 'dbo.History', 
      'There are ' + CONVERT(varchar(20), COUNT(ID)) + ' old records being purged.', @by
FROM #tempLog
在表上创建删除后触发器。您可以查询已删除的计数

SELECT COUNT(*)
FROM   deleted