The safest thing would be to backup the transaction log, then restore the database froma full backup with norecovery, then restore the transaction log with 'stopat = time' where time is just before the bad query was run. This assumes that you are in full recovery mode, however.
Alternatively, if you have the disk space, you can restore the database to a new location, and try to transfer some of the lost data over. This is much more risky, as you have to be sure you get all of the relationships, id values, etc. right. Most vendors will invalidate their support contracts, if you do this sort of thing to their databases.