Steve Jones explains database snapshots:
I’ve rarely dealt with database snapshots, outside of lab experimentation. They didn’t exist when I did most of my DBA work, and since then we haven’t seen the need for them at SQLServerCentral, though, I may suggest we add them to our deployment process since we can quickly roll back if something breaks.
However, I created one recently for a test and realized that I’d forgotten the syntax. Unlike the quick “create database xx” syntax I often use, with a snapshot I need to be more specific.
Word of warning: don’t have more than one active snapshot of a single database. If you do, you’ll likely have major performance problems. My favorite use case for snapshots was building some semi-automated integration tests a few years back. I created a tool for devs to create snapshots, and then they could run all the tests they wanted and revert the snapshot afterward. There are some good uses in production environments as well.