Technical Article

Restore All Backups

,

Genrate Database Retore Script for all Databases on an instance.

CREATE  PROC [dbo].[RestoreDatabaseScript] @PATH CHAR(100), @BACKUPPARH CHAR(150)
AS
BEGIN 
SET NOCOUNT ON
CREATE TABLE #TEMP
(
ID INT IDENTITY,
LOGICAL_NAME CHAR(50),
[FILE_PATH]CHAR(150),
[FILE] CHAR(50),
DATABASENAME CHAR(50),
FILE_ID INT
)

INSERT INTO #TEMP
(
LOGICAL_NAME,
FILE_PATH,
[FILE],
DATABASENAME,
FILE_ID
)
SELECT 
SYS.MASTER_FILES.NAME AS [LOGICAL_NAME],
PHYSICAL_NAME AS [FILE_PATH],
SUBSTRING ( PHYSICAL_NAME ,LEN(REVERSE(RIGHT(REVERSE(PHYSICAL_NAME),(LEN(PHYSICAL_NAME)-CHARINDEX('\', REVERSE(PHYSICAL_NAME),1))+1)))+1 , LEN(PHYSICAL_NAME) ),
SYS.DATABASES.NAME,
FILE_ID
FROM 
SYS.MASTER_FILES   
INNER JOIN 
SYS.DATABASES ON SYS.MASTER_FILES.DATABASE_ID =  SYS.DATABASES.DATABASE_ID
WHERE 
SYS.MASTER_FILES.DATABASE_ID > 6 AND FILE_ID IN (1,2) 
ORDER BY 
[LOGICAL_NAME]

SET NOCOUNT OFF

DECLARE @ID INT = 1
DECLARE @COUNT INT
SELECT  @COUNT = COUNT(*) FROM #TEMP
WHILE(@ID < = @COUNT)
BEGIN

DECLARE @MDF VARCHAR(100)
DECLARE @MDFPATH VARCHAR(100)
DECLARE @MDFFILE VARCHAR(100)
DECLARE @DATANASE VARCHAR(100)

DECLARE @LDF VARCHAR(100)
DECLARE @LDFPATH VARCHAR(100)
DECLARE @LDFFILE VARCHAR(100)

SELECT @MDF  = LTRIM(RTRIM(LOGICAL_NAME)),@MDFPATH = LTRIM(RTRIM(FILE_PATH)),@MDFFILE = [FILE],@DATANASE =  DATABASENAME FROM #TEMP  WHERE ID = @ID AND FILE_ID = 1
SELECT @LDF  = LTRIM(RTRIM(LOGICAL_NAME)),@LDFPATH = LTRIM(RTRIM(FILE_PATH)),@LDFFILE = [FILE] FROM #TEMP WHERE ID = @ID+1  AND FILE_ID = 2
PRINT '--Database Name = ['+RTRIM(LTRIM(@DATANASE))+']'
PRINT '--------------------------------------------------------------------------------------------'
PRINT 'RESTORE DATABASE ['+RTRIM(LTRIM(@DATANASE))+']'+CHAR(13)+
'FROM DISK = '+CHAR(39)+RTRIM(LTRIM(@BACKUPPARH))+RTRIM(LTRIM(@DATANASE))+'.bak'+CHAR(39)+CHAR(13)+
'WITH 
MOVE '+CHAR(39)+@MDF+CHAR(39)+ ' TO '+CHAR(39)+RTRIM(LTRIM(@PATH))+RTRIM(LTRIM(@MDFFILE))+CHAR(39)+',
MOVE'+CHAR(39)+@LDF+CHAR(39)+' TO '+CHAR(39)+RTRIM(LTRIM(@PATH))+RTRIM(LTRIM(@LDFFILE))+CHAR(39)+'
, REPLACE'
PRINT '--------------------------------------------------------------------------------------------'
SET @ID=@ID+2
END
DROP TABLE #TEMP
END
GO

Rate

2.5 (2)

You rated this post out of 5. Change rating

Share

Share

Rate

2.5 (2)

You rated this post out of 5. Change rating