I was recently asked about T-SQL Snapshot backups on secondary replicas, which I hadn’t looked at for many years as it’s kind of a niche item. I was definitely surprised to find little caveats here and there, thus you get this wonderful post.
If you’re unfamiliar with T-SQL Snapshot backups, it’s a way to flush and hold changes made by IO to a database (your Freeze and Thaw entries in the errorlog) so that a stable disk image can be created and then backed up at the storage or filesystem layer. This can be an extremely fast way to create snapshots of databases that are quite large (assuming you’ve set everything up correctly) even across storage arrays (assuming it supports other options, such as ODX).
To keep this short, as of my testing on SQL 2022 and 2025 in August 2026, there is only a single way you can backup a secondary replica’s databases using T-SQL Snapshot. To do this, the databases _must_ use the following options.
1. Secondary databases must be set to be readable.
2. ALTER SERVER CONFIGURATION must be used to freeze the IO.
3. You must specify COPY_ONLY even on SQL 2025.
If you follow all of those, you’ll end up with something such as this:
ALTER SERVER CONFIGURATION SET SUSPEND_FOR_SNAPSHOT_BACKUP = ON (GROUP = (testdb1, testdb2), MODE = COPY_ONLY);
Note that attempting to use the ALTER DATABASE method will fail.