How to fix Error 3035 on Windows Server 2025 / Windows 11

Troubleshooting Guide: SQL Server Error 3035 – Cannot Perform a Differential Backup

Why This Error Happens

Error 3035 occurs when SQL Server has no baseline to measure changes against for a differential backup. This typically happens because no full backup has ever been taken for the database, the full backup history was broken by a database file restore, rename, or re-creation, or the msdb backup history was cleared/corrupted. Since SQL Server 2025 relies on the Base LSN (Log Sequence Number) recorded during the last full backup, any disruption to that chain invalidates subsequent differential backup attempts.

Step-by-Step Resolution Guide

Step 1: Verify Backup History Exists

  • Open SQL Server Management Studio (SSMS) and connect to the instance.
  • Run the following query to check for a valid full backup record:
  SELECT database_name, type, backup_start_date 
  FROM msdb.dbo.backupset 
  WHERE database_name = 'YourDatabaseName'
  ORDER BY backup_start_date DESC;
  • Look for a row where type = 'D' (Database Full Backup). If none exists, this confirms the root cause.

Step 2: Perform a Full Backup to Re-establish the Baseline

  • Execute a full backup using T-SQL or SSMS to reset the LSN chain:
  BACKUP DATABASE [YourDatabaseName] 
  TO DISK = 'C:\SQLBackups\YourDatabaseName_Full.bak' 
  WITH INIT, STATS = 10;
  • Ensure the backup destination folder (e.g., C:\SQLBackups\) exists and the SQL Server Service Account has Write permissions on Windows Server 2025.
  • Wait for the “100 percent processed” confirmation in the Messages tab.

Step 3: Re-run the Differential Backup

  • Once the full backup completes successfully, immediately attempt the differential backup again:
  BACKUP DATABASE [YourDatabaseName] 
  TO DISK = 'C:\SQLBackups\YourDatabaseName_Diff.bak' 
  WITH DIFFERENTIAL, STATS = 10;
  • If the error persists, check the SQL Server Error Log (via SSMS > Management > SQL Server Logs) for underlying I/O or permission errors masking the 3035 code.

Step 4: Check for Database State or Recovery Model Changes

  • Verify the database is not in SIMPLE recovery mode if you require differential/log chaining consistency:
  SELECT name, recovery_model_desc FROM sys.databases WHERE name = 'YourDatabaseName';
  • If the database was recently switched from SIMPLE to FULL, a new full backup is mandatory before differentials will function.

Alternative or Verification Steps

  • Verification: Query msdb.dbo.backupset again after the differential backup completes; you should see a new row with type = 'I' (Differential) without triggering Error 3035.
  • Alternative: If backup history in msdb is corrupted (not just empty), consider running sp_delete_database_backuphistory to clear fragmented records, followed immediately by a fresh Full Backup to start a clean backup lineage.