Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Here are some notes on “SQL Server 2008 Database Snapshots” I took while attending an advanced class on SQL Server taught by Greg Low (from https://sqlblog.com/blogs/greg_low/ and https://www.sqldownunder.com/).
Please note that, although these notes were taken during the class, I might have added some of my own (mis)interpretation :-). Always check your facts on Books Online (I try to provide links when applicable). As with anything else you get from a blog, never use any of this in production before you thoroughly validate it a test environment. Please keep in mind that some of those will be hard to follow without some pre-requisite knowledge and the right context. Reading the post from top to bottom will help.
Database Snapshots
- Read-only, static views of an entire database
- See https://msdn.microsoft.com/en-us/library/ms175158.aspx
- Used for: Reporting, protection from user error, major updates, unit testing
- Careful – When using with major updates or bulk operations, consider the impact
- Uses NTFS sparse files, always in the same server as database
- CREATE DATABASE … ON (FILE=Name, FILENAME='...') AS SNAPSHOT OF …
- See https://msdn.microsoft.com/en-us/library/ms175876.aspx
- File specified under FILENAME contains changes in the original database since snapshot time
- Can’t drop, detach or restore database (or add more files to it) when a snapshot exists
- Careful - If you lose the original database files, you lose the snapshot
Considerations
- Can create multiple snapshots of the same database
- Careful – Additional write workload when updating original database with multiple snapshots
- Can’t use with master, model or tempdb
- Can’t change permissions on snapshot after it is created
- No option to refresh a snapshot. Need to drop and recreate.
- If creating on mirrored database, the mirror needs to be synchronized
- Created always with ALLOW_SNAPSHOT_ISOLATION set to ON
Demo
- Create a database, create a table, insert a few rows
- Create snapshot with CREATE DATABASE … AS SNAPSHOT OF …
- Query the table in the snapshot
- In Windows Explorer, at "Size" and "Size on Disk" properties of the file
- Go back to original database, insert a few more rows, update some rows, delete some rows, query the table
- Query the table in the snapshot - verify it has the old state
- In Windows Explorer, at "Size" and "Size on Disk" properties of the file again
Comments
- Anonymous
January 01, 2003
Here are some notes on “SQL Server 2008 Database Mirroring” I took while attending an advanced class