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

Troubleshooting Guide: Error 3296 — “The file %.*ls exists on the remote endpoint”

Why This Error Happens

Error 3296 occurs during SQL Server backup or restore operations when the backup process detects that a file with the identical name already exists at the remote endpoint (such as a network share, Azure Blob Storage container, or mirrored server location). This typically happens because SQL Server, by default, refuses to overwrite existing backup files unless explicitly instructed to do so via the INIT or FORMAT options. It can also surface due to stale file remnants from a previously failed or interrupted backup job that never cleaned up properly, or because of a naming collision in automated backup scripts that don’t generate unique timestamps.

Step-by-Step Resolution Guide

Step 1: Identify the Conflicting File on the Remote Endpoint

  • Check the exact file path referenced in the error message (replace %.*ls with the actual file name from your SQL Server Error Log).
  • For network shares, navigate to the UNC path (e.g., \\BackupServer\SQLBackups\) and confirm the file exists.
  • For Azure Blob Storage, use Azure Storage Explorer or az storage blob list to confirm the blob name collision.

Step 2: Modify the Backup Command to Allow Overwrite

  • Update your T-SQL backup statement to include the WITH INIT clause, which overwrites existing backup sets in the file:
  BACKUP DATABASE [YourDB] TO DISK = 'D:\Backups\YourDB.bak' WITH INIT;
  • If you need to fully reformat the media (ignoring existing headers), use WITH FORMAT instead:
  BACKUP DATABASE [YourDB] TO DISK = 'D:\Backups\YourDB.bak' WITH FORMAT;
  • If using Maintenance Plans, open the Back Up Database Task in SQL Server Management Studio (SSMS) and check “Overwrite the existing backup set.”

Step 3: Clean Up Stale Files from Failed Jobs

  • Open File Explorer or PowerShell and remove orphaned .bak or .trn files left behind by interrupted jobs:
  Remove-Item "\\BackupServer\SQLBackups\YourDB_old.bak" -Force
  • Review SQL Server Agent Job History (in SSMS under SQL Server Agent > Jobs) to identify which job step failed before cleanup completed.

Step 4: Implement Unique File Naming in Automation Scripts

  • Update backup scripts or SQL Agent job steps to append a dynamic timestamp to avoid future collisions:
  DECLARE @FileName NVARCHAR(500);
  SET @FileName = 'D:\Backups\YourDB_' + FORMAT(GETDATE(), 'yyyyMMdd_HHmmss') + '.bak';
  • If using PowerShell-based automation (e.g., dbatools), ensure the -FilePath parameter includes a timestamp variable rather than a static name.

Step 5: Verify Remote Endpoint Permissions

  • Confirm the SQL Server service account has Modify and Delete NTFS permissions on the target folder (Right-click folder > Properties > Security tab).
  • For Azure Storage endpoints, verify the SAS token or credential used has Write and Delete permissions assigned.

Alternative or Verification Steps

  • Re-run the backup job manually via SSMS or sqlcmd and confirm it completes without Error 3296 in the SQL Server Error Log (EXEC xp_readerrorlog).
  • If the error persists, test writing a dummy file directly to the remote endpoint using the SQL Server service account credentials to rule out an underlying permissions or connectivity issue rather than a naming conflict.