• I think when the package was failed for the first time due to primary key error it might have already inserted some records into destination table. And when you re ran the package after correcting the file it would have tried to load the all the records from the text file some of which already loaded. In short, Check point doesnt store the info such as what are all records inserted and what are not. Instead you can use transaction property in conjunction with checkpoints.

    So that whenever the task fails it will rollback i.e delete the inserted records from the destination table.

    Thanks,

    Uday