我需要将 200'000 条记录从一个数据库 (oracle) 迁移到另一个 (SQL Server)。我将使用 SSIS(SQL Server 集成服务)管理迁移,并且我已经创建了包。
记录引用数据库中的文档(带有 HBLOB 字段)。它们需要相当长的时间来迁移,因此我在 SSIS 中引入了变量,以便每次只迁移一部分记录,方法是使用将变量作为边界的查询。通过这种方式,我可以在上线日期之前开始移动一些历史记录。
一开始我想按 ID 移动,例如以 1'000 的第一个块然后是第二个块,依此类推。但这是不可能的,因为某些文档(在生产系统中)仍然可以更改,因此它们还不能移动。
这里有约束:
If "Status" is closed -> the document can be safely taken
(other statuses are draft, pending).
If "CreatedDate" < 2010 -> the document can be moved without taking care of status.
- 首先,我可以移动所有“旧”文档(在 2010 年之前创建)。
- 我会将所有处于“已关闭”状态的文档移动。
- 上线那天,我将迁移所有剩余的记录。
然而,使用这种模式,跟踪移动的文档(在点 [2] 处)并不容易,因为同时其他文档可能会进入关闭状态。
任何人都可以提出一个更好的程序来移动这些记录,而不会有重复或丢失任何数据的风险吗?