我目前正在开展涉及第三方数据库和应用程序的项目。到目前为止,我们能够在我们的数据库之间成功 TEST 和接口数据。然而,当我们提取大量数据(每行100000行和10列)时,我们遇到了麻烦,并且突然它因交易中断而停止了(无论是停电,强制退出等等),丢失或在这种类型的场景中发生了重复数据。
您能否提出处理这些类型的方案的建议?谢谢!
这是我们当前的界面结构
OurDB -> Interface DB -> 3rdParty DB
OurDB :我们正在将OurDB
(位列为false)的记录提取到InterfaceDb
InterfaceDB :从OurDB
插入记录后,我们将OurDB位列更新为true
3rdPartyDB :他们将从InterfaceDB
中提取并删除所有记录(他们假设所有记录都用于提取)
答案 0 :(得分:1)
嗯,你肯定需要一个ETL工具,然后最好是SSIS。首先,它将大大提高您的传输速率,同时还提供强大的错误处理。此外,您必须使用查找转换以确保重复项不会进入sytsem。我建议使用缓存连接管理器来执行查找。
在设计方面,如果你的源系统(OurDB)有一个主键说recId,那么在你的InterfaceDB表中有一个列说source_rec_id。假设您的第一次运行已转移100行。现在,在第二次运行中,您需要选择100 + 1记录并继续下一行。通过这种方式,您将拥有跟踪机制以及源系统和目标系统之间的一对一关联,以了解已传输的记录数量,剩余数量等。
为了更好地理解SSIS,请转到Channel 9 - msdn - SSIS。非常有用的资源。