In a perfect world, every database object change would go through rigorous source control procedures, and you would have full backups of all databases every minute. Of course, in reality, this is not the case. One of the more common scenarios may involve someone editing a stored procedure multiple times between backups or within some kind of development cycle, and then wishing they had version 2 available. It is not in the backup yet, so cannot be restored; and the user, of course, has closed his or her window without saving.