SQL Server 2012:从"生产"复制旧数据每月到"存档" -db

时间:2014-07-14 09:04:52

标签: sql-server database sql-server-2012 views database-backups

将数据从生产表数据移动到表相似的归档表数据的最佳方法是什么

我有一个SQL Server 2012数据库,其中包含一些每秒/分钟增长的“大数据”表。因此,为了防止我的数据库表变得越来越大,将来要求更慢的请求。我想从以下位置移动较旧的数据:

“生产”数据库表 - >到另一个“归档”数据库表

我一直在查看可以更新“状态”字段的视图,以便拥有[A] Production-db或[B] Archive-db。这样,当我不想让A数据更长时,我可以使用“Status”= B轻松更新旧数据。

  1. 但这种做法最好吗?因为它似乎只能在同一个数据库中才能工作。

  2. 如果我有2个数据库,我该怎么办?

  3. 我应该用SELECT INSERT DELETED编写脚本吗?

  4. SQL Server是否有一些内置脚本/日程表,其中数据未被删除,只有一些数据不是全部传输?

  5. 转移数据的速度并不重要,因为它可能每月发生一次。

    由于

2 个答案:

答案 0 :(得分:1)

最简单的方法是创建一个SQL Server代理作业(根据需要安排它,例如每月一次),然后将数据从生产数据库移动到存档数据库(使用在SQL中执行的存储过程)服务器代理程序作业首先从源DB中插入归档DB和DELETE。

如果您需要模式高级ETL处理(如行级错误控制等),您还可以创建SSIS(SQL Server Integration Services)包并通过SQL Server代理运行该包。但这可能是你的情况有点过分了。

答案 1 :(得分:0)

通过使用“插入到”语句,您可以在其中选择所需的旧数据进行归档,可以轻松实现这一目标。这是手动方式,您可以根据存档条件将其转换为存储过程。

insert into *destinationArchiveDB*
    select * 
    from *sourceProductionDB*
    where *your archive condition*

例如:

insert into TRC_ARC.dbo.Table1
    select * 
    from TRC.dbo.Table1
    where ProductionDate = 'yyyy-mm-dd'

请记住,如果不同的SQL会显示错误,则源和目标的表结构应该相同。