gpt4 book ai didi

sql-server-2005 - 使用 SSIS 将超过 3 年的记录从一个数据库(生产数据库)移动到另一个数据库(存档数据库)

转载 作者:行者123 更新时间:2023-12-02 02:03:09 25 4
gpt4 key购买 nike

要求是将超过 3 年的数据从 Production DB 移动到 Archive DB,并在移动后从 Production DB 中删除这些记录,因此在任何时候 Production DB 都将只有最近三年的记录。

我想通过 SSIS 实现这一点,我阅读了很多关于数据归档的文章,但无法找出最好的方法。

我是 SSIS 新手

我想实现完全像这样的东西(答案在下面的链接中给出),附加条件是只移动那些超过 3 年的记录,然后删除这些记录。

https://dba.stackexchange.com/questions/25867/moving-data-from-one-db-to-another-using-ssis

接受答案的标准答案应解决

  • 可扩展性
  • 复杂性
  • 故障处理
  • 可靠性

最佳答案

您可以使用 OUTPUT 子句一次性删除并返回要移动的数据。

create table ProductionTable
(
ValueDate datetime not null
, Data varchar(max) not null
)

insert ProductionTable values ('20100101', '3 years ago')
insert ProductionTable values ('20130425', 'this year')
insert ProductionTable values ('20130426', 'this year')

delete ProductionTable
output deleted.ValueDate, deleted.Data
where ValueDate <= dateadd(year, -3, getdate())

代码也可以在 SQLFiddle 上访问

现在我将向您展示在 SSIS 中重现示例所需遵循的确切步骤:

  1. 创建一个新项目并为 ProductionDB 和 ArchiveDB 定义数据源。
  2. 在“控制流”选项卡中,创建一个“数据流任务”。
  3. 在“数据流”选项卡中,创建“OLE DB 源”和“OLE DB 目标”。
  4. 在“OLE DB 源”中,选择 ProductionDB 并选择“SQL 命令”作为数据访问模式。粘贴带有输出子句的删除语句。
  5. 点击“列”,然后点击确定。
  6. 在“OLE DB 目标”中,选择 ArchiveDB 并选择“表或 View - 快速加载”作为数据访问模式,然后选择您的 ArchiveTable。
  7. 点击“映射”,然后点击确定。
  8. 运行程序包,您应该能够验证一行已从 ProductionTable 中删除并移至 ArchiveTable。

希望对您有所帮助。

其他要记住的事情,因为您要删除和移动数据,所以事务一致性非常重要。想象一下,在删除/移动过程进行到一半时,服务器出现故障,然后您最终删除了数据,但没有将其归档。

如果您不确定如何通过强制事务一致性来保护您的数据,请向其他 SQL/SSIS 专家寻求有关如何在 SSIS 中使用事务的帮助。

关于sql-server-2005 - 使用 SSIS 将超过 3 年的记录从一个数据库(生产数据库)移动到另一个数据库(存档数据库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16234782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com