Firstly into using tranactions -
http://www.sqlteam.com/article/introduction-to-transactions[
^] and the microsoft documentation here
http://msdn.microsoft.com/en-us/library/ms174377.aspx[
^]
However, you seem to be implying that the user can make this choice for themselves (compared to something going wrong during the load) so you may want to use triggers to store away the pre-post data onto another table - micosoft documentation here
http://msdn.microsoft.com/en-gb/library/aa258254(v=sql.80).aspx[
^].
You could just copy the entire table to another "backup" table prior to the load but I wouldn't recommend it (impact of multiple users, performance etc).
Some research into the Memento Design pattern may also prove useful - here's an example article
Memento Design Pattern[
^]