Sql 查询以移动一些记录,然后删除它们

Sql 查询以移动一些记录,然后删除它们,sql,sql-server,ssis,sql-agent,Sql,Sql Server,Ssis,Sql Agent,如果我的问题对你们中的一些人来说太简单,我真的很抱歉。我是SQL Server的新手,非常需要建议。我做了我的研究,但我仍然不确定如何进行,因为我读到的所有关于它的文章似乎都有点过于笼统 我的任务是保持表ABC(在服务器1上)没有超过3个月的记录。超过3个月的记录应自动移动到服务器2上的表ABC_ARCHIVE中。只是处理和删除记录并不是什么大问题,但我想在从服务器1删除记录之前,自动检查记录是否已经在服务器2上 我考虑使用一个查询,该查询将在SSIS包中运行,而SSIS包又将在SQL Serv

如果我的问题对你们中的一些人来说太简单,我真的很抱歉。我是SQL Server的新手,非常需要建议。我做了我的研究,但我仍然不确定如何进行,因为我读到的所有关于它的文章似乎都有点过于笼统

我的任务是保持表ABC(在服务器1上)没有超过3个月的记录。超过3个月的记录应自动移动到服务器2上的表ABC_ARCHIVE中。只是处理和删除记录并不是什么大问题,但我想在从服务器1删除记录之前,自动检查记录是否已经在服务器2上

我考虑使用一个查询,该查询将在SSIS包中运行,而SSIS包又将在SQL Server代理作业中运行。如果你认为我应该改变主意,请告诉我。我宁愿避免涉及任何不必要的组件

要选择3个月以上的记录,我需要以下查询:

Select *
From ABC
WHERE [CreateDate] <= DATEADD(mm, -3, GETDATE())
选择*
来自美国广播公司
其中[CreateDate]
  • 创建一个表变量或临时表来存储正在移动的记录的ID列表
  • 执行INSERT语句将记录从一个数据库复制到另一个数据库
  • 根据加入新数据库的临时表中的ID从原始数据库中删除记录
  • 使用这样的临时表可以防止在getdate()值不断变化时捕捉不同的记录

  • 创建一个表变量或临时表来存储正在移动的记录的ID列表
  • 执行INSERT语句将记录从一个数据库复制到另一个数据库
  • 根据加入新数据库的临时表中的ID从原始数据库中删除记录
  • 使用这样的临时表可以防止在getdate()值不断变化时随时捕获不同的记录。

    您可以使用该子句执行以下操作:

    下面是一个使用表变量的工作示例:

    DECLARE @t1 table(CreateDate datetime, col1 int, col2 int)
    DECLARE @t2 table(CreateDate datetime, col1 int, col2 int)
    INSERT @t1 values('2015-01-01', 1,1)
    INSERT @t1 values('2016-01-01', 1,1)
    
    DELETE
    FROM @t1
    OUTPUT deleted.CreateDate, deleted.col1, deleted.col2 into @t2
    WHERE [CreateDate] <= DATEADD(mm, -3, GETDATE())
    
    SELECT * FROM @t1
    
    SELECT * FROM @t2
    
    DECLARE@t1表(CreateDate-datetime,col1-int,col2-int)
    声明@t2表(CreateDate-datetime,col1 int,col2 int)
    插入@t1值('2015-01-01',1,1)
    插入@t1值('2016-01-01',1,1)
    删除
    从@t1开始
    将deleted.CreateDate、deleted.col1、deleted.col2输出到@t2
    其中[CreateDate]您使用该子句进行如下操作:

    下面是一个使用表变量的工作示例:

    DECLARE @t1 table(CreateDate datetime, col1 int, col2 int)
    DECLARE @t2 table(CreateDate datetime, col1 int, col2 int)
    INSERT @t1 values('2015-01-01', 1,1)
    INSERT @t1 values('2016-01-01', 1,1)
    
    DELETE
    FROM @t1
    OUTPUT deleted.CreateDate, deleted.col1, deleted.col2 into @t2
    WHERE [CreateDate] <= DATEADD(mm, -3, GETDATE())
    
    SELECT * FROM @t1
    
    SELECT * FROM @t2
    
    DECLARE@t1表(CreateDate-datetime,col1-int,col2-int)
    声明@t2表(CreateDate-datetime,col1 int,col2 int)
    插入@t1值('2015-01-01',1,1)
    插入@t1值('2016-01-01',1,1)
    删除
    从@t1开始
    将deleted.CreateDate、deleted.col1、deleted.col2输出到@t2
    其中[CreateDate]