
If a database is designed correctly shouldn't it be possible to be consistent even if the snapshots are at different times?
No.
Typically, the log tail is trimmed as things are written back as a checkpoint is performed (writing back things from log to data file). If you have copied 1/2 the data file and checkpoint gets done that is in the first half of the data file and the log wraps... you're pretty hosed no matter what.
That's one mode of logging, but isn't the only one. MSSQL can function in 'FULL' or 'SIMPLE' logging modes. 'SIMPLE' functions in much the way you describe where the log is thrown away once the transaction is committed, but in 'FULL' logging mode the logs are kept until backed up or truncated manually. This enables point-in-time restore if the backups are done correctly, eg you can restore to right before you ran a DELETE but forgot the WHERE clause. Exchange has similar options. Neither will allow for seamlessly recovering from disk snapshots taken at different points in time though. James