But in bulk logged recovery model, data inserts are not logged , right? So how will the restored database contain data?
Well, you asked about a full backup, so there is not even any relation to what is being logged in the transaction log.
But to address your concern. let's say that you do this:
- Take a full backup.
- Create your table and add data to it in a minimally logged operation.
- Take a transaction log backup.
- Restore the full backup with NORECOVERY.
- Restore the transaction log backup. (WITH RECOVERY this time).
Will the data in the table be there after the restore? The answer is yes. This because in step 3, all those pages in these extents for which SQL Server only logged the allocation of to the transaction log are written to the backup. SQL Server knows which pages this is, because there is a special bitmap page with this information.
The one thing you cannot do is to restore the transaction log and say "Hey, SQL Server stop at this point, just before I inserted the data". When you are in bulk_logged recovery, you need to restore transaction-log backups in whole, there is no point-in-time recovery.
Overall, there is never a situation where you take a backup (full, differenital, or log), and restore the backups, and you don't have the same data as you had originally. That would be a major bug. (OK, so there is one exception: there is corruption due to bad hardware somewhere along the line.)