【问题标题】:Deleting archived data based on 30 days data range删除基于 30 天数据范围的归档数据
【发布时间】:2018-12-31 01:18:57
【问题描述】:

我在服务器中有 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

【问题讨论】:

  • 好吧,如果T_TRC_AssyPoka 表中的基础数据可能会发生变化(即新记录到来或其他进程删除记录),那么目标记录的数量可能会有所不同。
  • 亲爱的 Tim,由于工厂关闭,在归档活动期间该表没有任何事务。所以我很确定不会有新的记录出现。
  • 您的 INSERT INTO ... SELECT 是使用 same 表,T_TRC_AssyPoke 用于 sourcedestination。我很确定您打算从 T_AssyPoka 复制到 T_TRC_AssyPoka
  • 什么是数据库?看起来像 SQL Server 或 Sybase。
  • Tim,是同名表,但由于sql实例不同,来源不同。我的意思是,已经归档到归档表(TRC_ARC.dbo.T_TRC_AssyPoka)的源表数据(TRC.dbo.T_TRC_AssyPoka)完全按照归档方式从源表中删除。

标签: sql sql-server-2008-r2 archiving


【解决方案1】:
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

最好的问候,

雷切尔

【讨论】:

  • 感谢瑞秋的帮助。我会试试这个并通知是否可以
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多