Copy on Write for SQL Server
If the overhead you are concerned about with the local SQL installs is a licensing overhead, and the database is smaller than 10Gb, then you could instead install Express edition which is free (but has the 10Gb limit). If the DB is a little over 10Gb then you could restore to the server, compress enough tables &amp; indexes to make up the difference, then backup and restore that locally.
There is no copy-on-write support in SQL Server itself. If you are running it on Linux you could perhaps try using LVM snapshots to try acheive this:

Drop the existing DBs if present
Drop the LVM snapshots if present from last time
Backup the DB and restore it with the data and log files on the reference LVM volume
Detach (sp_detach_db) the restored copy
Make enough read-write LVM snapshot volumes of the volume now containing the updated DB copy
Attach the DB from each of the snapshots (sp_attach_db)

If your storage subsystem is a SAN with RW-snapshot features than you could potentially use a similar method with that.
I would not recommend this, or other options with 20 copies of the DB on the same instance and drive(s), if the users might pose much load - they will all compete for IO, they will all compete for buffer pool memory, and while the on-disk data is CoW the SQL instance will not know this so will happily hold duplicate copies of unmodified data in memory.