Encountering a “Cannot perform a differential backup for database, because a current database backup does not exist” error might generate some confusion if you look into your backup log and can see that FULL backups have been successfully created.
This article will try to give you an answer as to why this happens and a solution, that will hopefully be applicable to your situation.
Before diving into the problem, we consider that it would be best to add some details and create a context regarding the problem as this would be better to understand the solution and why the cause is for this problem, so this issue won’t be encountered again in the future.
As you might know, differential backups are a type of backup which stores the changes which have occurred in your database since the last FULL database backup. In order to be able to create a differential backup you will need to have a FULL database backup before. Multiple differential backups can be created later, which store the incremental changes in your database since your last FULL or DIFFERENTIAL backup, but having a FULL backup is mandatory as this is the base for your later backups which are of a different type (differential or transaction log).
Cannot perform a differential backup
Most of the times this message is encountered is if you are using another software solution (NTBackup, BE, Bacula etc.) which takes snapshot-like backups (VSS copies – Volume Shadow Copy) of your databases. By creating snapshots backups of your database can cause the chain of backups to break and to invalidate your previous DIFFERENTIAL or FULL backups, which is why when your current DIFFERENTIAL backup process starts, it will fail due to the fact that it can’t see the initial FULL backup or another DIFFERENTIAL backup which has occurred before.
Because there are different backup software solutions which take snapshot type of backups, the solutions could most likely be different.
We will cover in continuation of this article NTBackup for which we can provide a clear and safe solution. If you do encounter this error while also using other backup software which take snapshots of your database, please post a comment with the name of the application and provide a few more details about your situation (backup schedules – database and 3rd party snapshot backup tool, since when have you started seeing this error, since when have you started using the snapshot tool etc.) which you consider relevant.
Solution for NTBackup
If you are also using NTBackup to take snapshots of your database along with a database backup schedule from SQL Server (or other tools) and you encounter “Cannot perform a differential backup because current backup does not exist” error, the solution is to first check that the Service for SQL Server VSS Writer has its “Startyp Type” set to “Manual” and that this service is Stopped.
If a VSS Copy (snapshot) is taken of the database while this service is running, then the VSS Writer will lock the Full Recovery model and by doing this the backup chain of your databases will be broken.
To change the service’s settings you’ll just have to go to “Start Menu” and then go to “Services” and search for the service called “SQL Server VSS Writer“.
After finding the service just right click it and set the Startup Type to Manual and also make sure that the service is stopped, so that if you ever restart the machine SQL Server is installed on, this service will not start again automatically and then cause the backup chain to break again.
In terms of why this issue occurs, it can suddenly appear if you have made an upgrade to your SQL Server, for example upgrading from 2005 to 2008R2. During this upgrade process the default values for the VSS Writer service can change and be set to Automatic and the service can start. By default, when installing SQL Server, this service is turned off and does not start automatically, but its settings can change due to a situation presented above or something similar.
If in your backup process you are also using other software solutions which take Shadow Copies of your database and you start to encounter this error, please leave a comment with more details about your situation and we will try to find a solution and update this article.
Also, if you have managed to solve this issue by yourself, please also leave a mesage and we will integrate your solution in this article, so that if someone else encounters the same problem he will hopefully find a solution much easier.