我正在使用SSIS将大型数据库从oracle 11g迁移到SQL SERVER 2008R2。如何使用校验和验证数据完整性?
答案 0 :(得分:0)
过去,我总是使用一些应用程序控件来完成此操作。它应该是易于在两个平台上计算的东西。
最终结果通常是查询:
select count(*)
, count(distinct col1) col1_dist_cnt
...
, count(distinct col99) col99_dist_cnt
, sum(col1) col1_sum
...
, sum(col99) col99_sum
from table
假脱机到文件,Excel或数据库并比较结果。除了项目管理和审计员。
请详细了解应用程序控制here。我在监管报告的各种财务报告系统之间进行了检查,因此这种方法适用于大多数情况。
如果只有一个字段值错误,它将始终显示。两个错误可能相互补偿。例如,第1行col 1从第2行col 1获取值。
要检测到这一点,请将每个值乘以该行唯一的值。例如,如果您还具有迁移中包含的唯一ID列或标识:
, sum(ID * col1) col1_sum
...
, sum(ID * col99) col99_sum
当您获得数字溢出时,首先尝试使用最大可用精度(特别是在SQL Server上有时很难)。如果不再可行,请使用mod函数。 mod隐藏了几种类型的错误。
锦上添花就是自动生成这些陈述。在Oracle上查看user_tables,user_tab_columns。在SQL Server上查看syscolumns等。