将数据从生产表数据移动到表相似的归档表数据的最佳方法是什么
我有一个SQL Server 2012数据库,其中包含一些每秒/分钟增长的“大数据”表。因此,为了防止我的数据库表变得越来越大,将来要求更慢的请求。我想从以下位置移动较旧的数据:
“生产”数据库表 - >到另一个“归档”数据库表
我一直在查看可以更新“状态”字段的视图,以便拥有[A] Production-db或[B] Archive-db。这样,当我不想让A数据更长时,我可以使用“Status”= B轻松更新旧数据。
但这种做法最好吗?因为它似乎只能在同一个数据库中才能工作。
如果我有2个数据库,我该怎么办?
我应该用SELECT INSERT DELETED
编写脚本吗?
SQL Server是否有一些内置脚本/日程表,其中数据未被删除,只有一些数据不是全部传输?
转移数据的速度并不重要,因为它可能每月发生一次。
由于
答案 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会显示错误,则源和目标的表结构应该相同。