I reckon you have 2 possible approaches:
1. Use SQL restore to restore individual tables. If the entity you're loading data into is a custom entity, and you've no plugins or workflows running of it, then it may be viable to just restore the <entityname>base and <entityname>extensionbase
tables. This should work, but you'd want to do a lot of testing to ensure you don't corrupt the database. I wouldn't recommend this approach if you're loading data into a built-in entity, as other tables could also be affected
2. Or, rollback by deleting the affected records. If your etl operation updates CRM in a supported way, then the modifiedon and modifiedby attributes should give you sufficient information to determine which records to delete
Microsoft CRM MVP -
http://mscrmuk.blogspot.com http://www.excitation.co.uk