Data changes are guaranteed to be written to the transaction log, but the data pages may still be held in cache. If every transaction had to write affected pages to disk on commit, the disk throughput and cache turnover would be so high that the database would be very slow indeed. The fact that the transaction changes are recorded in the transaction log means that a transaction can always be rolled back if necessary, even if the server crashes. Here is page:
<click here for link> This is why the transaction log is always scanned for transaction to be rolled back / rolled forward on server startup before a database is brought online. You may try read thes, it is a professional data recovery software.