首页 > 解决方案 > 删除基于 30 天数据范围的归档数据

问题描述

我在服务器中有 2 个 sql 实例。1 个名为 TRC(在线数据库),另一个名为 TRC_ARC(归档数据库)。

我已经成功地将基于最早 EntryDate 的 30 天数据从 TRC 转移到 TRC_ARC。

查询是

use TRC_ARC
--T_TRC_AssyPoka Table
declare @MaxNo datetime = (select max(EntryDate) from T_TRC_AssyPoka) --date max current archived table
insert into TRC_ARC.dbo.T_TRC_AssyPoka --destination
select * from TRC.dbo.T_TRC_AssyPoka --source
where EntryDate > @MaxNo --source entrydate > date max current archived table
and DateDiff(D, @MaxNo, EntryDate) < 30 -- date range 30 days

如何从 TRC 中删除存档的 30 天数据?因为我尝试使用以下查询,但它返回受影响的不同行。

use TRC_ARC
--T_TRC_AssyPoka Table
declare @MaxNo datetime = (select max(EntryDate) from T_TRC_AssyPoka) --date max current archived table
**delete from TRC.dbo.T_TRC_AssyPoka** --destination
select * from TRC.dbo.T_TRC_AssyPoka --source
where EntryDate > @MaxNo --source entrydate > date max current archived table
and DateDiff(D, @MaxNo, EntryDate) < 30 -- date range 30 days

标签: sqlsql-server-2008-r2archiving

解决方案


use TRC_ARC
--T_TRC_AssyPoka Table
declare @MaxNo datetime = (select max(EntryDate) from T_TRC_AssyPoka) --date max current archived table
**delete from TRC.dbo.T_TRC_AssyPoka** --destination
select * from TRC.dbo.T_TRC_AssyPoka --source
where EntryDate > @MaxNo --source entrydate > date max current archived table
and DateDiff(D, @MaxNo, EntryDate) < 30 -- date range 30 days

根据您的上述描述,我的理解是您想删除已插入表“TRC_ARC.dbo.T_TRC_AssyPoka”的行。正确的?

如果是这样,您可以尝试以下脚本。

use TRC_ARC
    --T_TRC_AssyPoka Table
    declare @MaxNo datetime = (select max(EntryDate) from T_TRC_AssyPoka) --date max current archived table
    delete from TRC.dbo.T_TRC_AssyPoka
    where EntryDate > @MaxNo --source entrydate > date max current archived table
    and DateDiff(D, @MaxNo, EntryDate) < 30 -- date range 30 days

此致,

雷切尔


推荐阅读