Commit 4fe8bf93 authored by dwentzel's avatar dwentzel
Browse files

moved CreateSnapshot from svn

parent 1613efdf
creates a database snapshot of the current database, placing the NTFS sparse files into the same folder
as the actual datafiles. PRINTs out the command to restore the database back to the snapshot.
I use this to test quickly some code where transaction control may not be possible and I know I want to quickly
rollback my changes to the database.
EXEC dbo.CreateSnapshot 'Test_SNAP'
if exists (select * from sys.objects where object_id = object_id('dbo.CreateSnapshot'))
drop proc dbo.CreateSnapshot
CREATE PROC dbo.CreateSnapshot(
@SnapshotName varchar(255)
-- get logical file names
SELECT name, physical_name
INTO #FileNames
FROM sys.database_files
WHERE type = 0 --rows data, no ldf
SELECT @exec_sql = 'CREATE DATABASE ' + QUOTENAME(@SnapshotName) + ' ON '
SELECT @exec_sql = @exec_sql + CHAR(13) + CHAR(10) +
+ ', FILENAME = ''' + physical_name + '.snap''),'
FROM #FileNames
SELECT @exec_sql = LEFT(@exec_sql,len(@exec_sql)-1) + CHAR(13) + CHAR(10) + ' AS SNAPSHOT OF ' + DB_NAME()
PRINT 'This is the command to run'
PRINT @exec_sql
--EXEC (@exec_sql)
PRINT 'This command can be used to RESTORE your db from the snapshot'
\ No newline at end of file
......@@ -14,3 +14,9 @@ DatabaseBuildProcess : this is my old database build process. I have since migr
MD3 process which also resides in my git repo. MD3 uses PoSH so it's a little more
modern. It also has a ton of useability improvements. There is still some code in here that
I occassionally borrow however.
CreateSnapshot.sql : Quickly
creates a database snapshot and provides you with the commands to restore the db back to the
snapshot. This is great when testing some code (not in prod) where transaction control may
not be possible (such as testing service broker features). This will allow you to quickly
"roll back" any changes.
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment