Sql-server – Database backup – differential file size question

backupsql serversql-server-2005

For my backup plan for SQL Server 2005, I want to do a full on Sunday:

BACKUP DATABASE myDatabase TO DISK = 'D:\Database Backups\myDatabase_full.bak' WITH FORMAT
GO

Then I want to do a differential nightly the rest of the week:

BACKUP DATABASE myDatabase  TO DISK = 'D:\Database Backups\myDatabase_Diff.bak' WITH DIFFERENTIAL
GO

My assumption was that if there was little/no activity in the database, then the differential would not increase in size (or wouldn't increase by much).

However, when I run the differential backup above (with little or no activity), I'm seeing the differential backup increase by megs at a time. Why is it increasing like that?

Thanks

Best Answer

Something is changing your database!

Things like index rebuilds or defrags will cause page changes. Changes that are rolled back may have changed pages, so they count as well.
In addition differential backups are considered 'fuzzy' and so will have transaction log data in the backup, which it needs for consistency.

Paul Randal wrote a very cool script a while back that will tell you how many extents have changed since your last full backup, so you can use this to calculate how big your differential is going to be.

In addition, you should be able to use this script to tell you what pages have changed in your db. This may help you solve your changing data mystery.