Revision: 8284
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at September 11, 2008 10:37 by DaveChild
Initial Code
CREATE PROCEDURE RebuildDevDatabase AS -- the original database (use 'SET @DB = NULL' to disable backup) DECLARE @DB varchar(200) SET @DB = 'LiveDatabase' -- the backup filename DECLARE @BackupFile varchar(2000) SET @BackupFile = 'C:\Backups\SQL\RebuildDevDatabase\db_backup.dat' -- the new database name DECLARE @TestDB varchar(200) SET @TestDB = 'DevDatabase' -- the new database files without .mdf/.ldf DECLARE @RestoreFile varchar(2000) SET @RestoreFile = 'C:\Backups\SQL\RebuildDevDatabase\db_backup' -- **************************************************************** -- no change below this line -- **************************************************************** DECLARE @query varchar(2000) DECLARE @DataFile varchar(2000) SET @DataFile = @RestoreFile + '.mdf' DECLARE @LogFile varchar(2000) SET @LogFile = @RestoreFile + '.ldf' IF @DB IS NOT NULL BEGIN SET @query = 'BACKUP DATABASE ' + @DB + ' TO DISK = ' + QUOTENAME(@BackupFile, '''') + ' WITH INIT, SKIP' select @query EXEC (@query) END -- RESTORE FILELISTONLY FROM DISK = 'C:\temp\backup.dat' -- RESTORE HEADERONLY FROM DISK = 'C:\temp\backup.dat' -- RESTORE LABELONLY FROM DISK = 'C:\temp\backup.dat' -- RESTORE VERIFYONLY FROM DISK = 'C:\temp\backup.dat' IF EXISTS(SELECT * FROM sysdatabases WHERE name = @TestDB) BEGIN SET @query = 'ALTER DATABASE ' + @TestDB + ' SET SINGLE_USER with ROLLBACK IMMEDIATE' EXEC (@query) SET @query = 'DROP DATABASE ' + @TestDB EXEC (@query) END RESTORE HEADERONLY FROM DISK = @BackupFile DECLARE @File int SET @File = @@ROWCOUNT DECLARE @Data varchar(500) DECLARE @Log varchar(500) SET @query = 'RESTORE FILELISTONLY FROM DISK = ' + QUOTENAME(@BackupFile , '''') CREATE TABLE #restoretemp ( LogicalName varchar(500), PhysicalName varchar(500), type varchar(10), FilegroupName varchar(200), size int, maxsize bigint ) INSERT #restoretemp EXEC (@query) SELECT @Data = LogicalName FROM #restoretemp WHERE type = 'D' SELECT @Log = LogicalName FROM #restoretemp WHERE type = 'L' PRINT @Data PRINT @Log TRUNCATE TABLE #restoretemp DROP TABLE #restoretemp IF @File > 0 BEGIN SET @query = 'RESTORE DATABASE ' + @TestDB + ' FROM DISK = ' + QUOTENAME(@BackupFile, '''') + ' WITH MOVE ' + QUOTENAME(@Data, '''') + ' TO ' + QUOTENAME(@DataFile, '''') + ', MOVE ' + QUOTENAME(@Log, '''') + ' TO ' + QUOTENAME(@LogFile, '''') + ', FILE = ' + CONVERT(varchar, @File) EXEC (@query) END GO
Initial URL
http://weblogs.asp.net/mschwarz/archive/2004/08/26/220735.aspx
Initial Description
This script should be run from the "master" database. It will destroy the dev copy of a database and restore from the live copy. Code slightly modified from original (linked).
Initial Title
SQL Rebuild Dev Database
Initial Tags
database
Initial Language
SQL