T-SQL for restoring a database
Helper script for myself

Bits and pieces of SQL code were gathered for my own use when restoring a database. Best used when back-porting data. Posted as a helper for myself - But feel free to modify and use it.
-- INSTRUCTIONS:
-- 1. Replace custom_database with the actual database name (Use a replace all on custom_database)
-- 2. Change @BackUpFileName to the actual location
-- 3. Change parameters for @DbUser & @LoginPassword
-- ============================
-- Restore [custom_database]
-- ============================
DECLARE @BackUpFileName varchar(100), @DbUser varchar(100), @LoginPassword varchar(100);
SELECT @BackUpFileName = 'c:\temp\backups\custom_db_20150101.bak';
SELECT @DbUser = 'custom_db_user';
SELECT @LoginPassword = 'p@55w0rd';
PRINT 'Restoring [custom_database]';
USE master;
-- ============================
-- Kill All connections to DB
-- ============================
PRINT '-------------------------';
PRINT 'Killing all connections to database...';
ALTER DATABASE [custom_database] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
IF @@ERROR <> 0
GOTO FAILURE;
PRINT '-------------------------';
PRINT 'Retoring database...';
PRINT @BackUpFileName;
RESTORE DATABASE [custom_database]
FROM DISK = @BackUpFileName
WITH
FILE = 1,
NOUNLOAD,
REPLACE,
STATS = 10;
IF @@ERROR <> 0
GOTO FAILURE;
-- ============================
-- Fix Users on [custom_database]
-- ============================
PRINT '-------------------------';
PRINT 'Fixing users on database...';
USE [custom_database];
EXEC sp_change_users_login 'Auto_Fix', @DbUser, NULL, @LoginPassword;
EXEC sp_change_users_login 'update_one', @DbUser, @DbUser;
IF @@ERROR <> 0
GOTO FAILURE;
-- ============================
-- ANY OTHER CUSTOM ACTIONS
-- ============================
-- i.e. UPDATE db_users SET PASSWORD = 'password'
IF @@ERROR <> 0
GOTO FAILURE;
-- ============================
-- Allow connections to DB
-- ============================
PRINT '-------------------------';
PRINT 'Allowing connections to database...';
ALTER DATABASE [custom_database] SET MULTI_USER;
IF @@ERROR = 0
GOTO SUCCESS;
ELSE
GOTO FAILURE;
SUCCESS:
PRINT '-------------------------';
PRINT 'Successfully restored database!';
GOTO FINISH;
FAILURE:
PRINT '-------------------------';
PRINT 'An error ocurred :('
GOTO FINISH;
FINISH:
PRINT '-------------------------';
PRINT 'DONE!';
This article was originally written on Google's Blogger platform and ported to Hashnode on 17 Sep 2022.
About the author
Technical Director at Luminary. Umbraco 3x MVP.
Comments
Join the discussionNo comments yet. Be the first to comment.






