Why This Error Happens
SQL Server Error 1816 occurs because database snapshots are an engine-level feature that is explicitly blocked against system databases such as master, model, and msdb. This restriction exists because system databases control core server metadata and configuration, and creating a point-in-time snapshot of them could lead to catastrophic inconsistencies if the snapshot were ever reverted to. The error is almost always triggered by a script, maintenance job, or third-party backup tool that was mistakenly pointed at a system database instead of a user database.
Step-by-Step Resolution Guide
Step 1: Identify the Source of the Snapshot Command
- Open SQL Server Management Studio (SSMS) and check the job history or script that issued the
CREATE DATABASE ... AS SNAPSHOT OFcommand. - Look at SQL Server Error Logs (
C:\Program Files\Microsoft SQL Server\MSSQL17.MSSQLSERVER\MSSQL\Log\ERRORLOG) for the exact timestamp and query context tied to Event ID 1816. - Confirm whether the target database name resolves to
master,model,msdb, ortempdb.
Step 2: Correct the Target Database in the Script or Job
- Edit the T-SQL script, SQL Agent Job step, or automation tool configuration to point to a valid user database instead of a system database.
- Example of a corrected syntax:
CREATE DATABASE SalesDB_Snapshot ON
( NAME = SalesDB, FILENAME = 'D:\SQLData\SalesDB_Snapshot.ss' )
AS SNAPSHOT OF SalesDB;
- Double-check any PowerShell or dbatools automation (
New-DbaDbSnapshot) to ensure the-Databaseparameter excludes system databases.
Step 3: Audit Third-Party Backup or HA Tools
- Review backup software (e.g., Veeam, NetBackup, or custom scripts) configured for “Application-Aware” SQL Server backups, as some incorrectly attempt snapshots on all databases including system ones.
- Exclude
master,model,msdb, andtempdbfrom any snapshot-based backup policies in the tool’s configuration panel.
Step 4: Restart the SQL Server Service (If Job State Persists)
- If a stuck or orphaned snapshot job is still causing repeated failures, restart the SQL Server service via Services.msc or PowerShell:
Restart-Service -Name 'MSSQLSERVER' -Force
- Confirm the SQL Server Agent service also restarts cleanly to clear any queued job states referencing the invalid snapshot operation.
Alternative or Verification Steps
- Verify the fix by manually re-running the corrected snapshot command against a user database only, and confirm it completes without Error 1816 in the ERRORLOG.
- As an alternative, use native Database Backup (Full/Differential) instead of snapshots for any system database protection needs, since snapshots were never a supported method for
master,model, ormsdb.