• I am using database snapshots. It is one of the first features we made use of. I automate a job process to allow (certain trusted) users (processes) to request a snapshot. They would add a entry to a table in a database that they had access to - snapshot name, retention time (not to exceed 2 hours) , status. The job would run every 15 minutes checking the table. When a request came through a snapsot was created with the named request and the job then set the status to 'available'. They had a remote job check the table for a status change, do its queries, and then set the status to 'delete'. My job had a second step that looked for any 'delete' status and would delete those snapshots. If their process happen to fail before it could mark the snapshot status as 'delete' then the snapshot was deleted after exceeding the retention time. We used stored procedures to add entries to and make changes to the request table.