@@ -26,6 +26,15 @@ EXEC dbo.DatabaseRestore
2626 @BackupPathLog = 'D:\Backup\SQL2016PROD1A\LogShipMe\LOG\',
2727 @ContinueLogs = 0,
2828 @RunRecovery = 1;
29+
30+ EXEC dbo.DatabaseRestore
31+ @Database = 'LogShipMe',
32+ @BackupPathFull = 'D:\Backup\SQL2016PROD1A\LogShipMe\FULL\',
33+ @BackupPathDiff = 'D:\Backup\SQL2016PROD1A\LogShipMe\DIFF\',
34+ @BackupPathLog = 'D:\Backup\SQL2016PROD1A\LogShipMe\LOG\',
35+ @RestoreDiff = 1,
36+ @ContinueLogs = 0,
37+ @RunRecovery = 1;
2938*/
3039
3140IF OBJECT_ID (' dbo.sp_DatabaseRestore' ) IS NULL
3443
3544ALTER PROCEDURE [dbo].[sp_DatabaseRestore]
3645 @Database NVARCHAR (128 ), @RestoreDatabaseName NVARCHAR (128 ) = NULL , @BackupPathFull NVARCHAR (MAX ), @BackupPathDiff NVARCHAR (MAX ), @BackupPathLog NVARCHAR (MAX ),
37- @MoveFiles bit = 0 , @MoveDataDrive NVARCHAR (260 ) = NULL , @MoveLogDrive NVARCHAR (260 ) = NULL , @TestRestore bit = 0 , @RunCheckDB bit = 0 , @ContinueDiff bit = 0 ,
38- @ContinueLogs bit = 0 , @RunRecovery bit = 0
46+ @MoveFiles bit = 0 , @MoveDataDrive NVARCHAR (260 ) = NULL , @MoveLogDrive NVARCHAR (260 ) = NULL , @TestRestore bit = 0 , @RunCheckDB bit = 0 , @RestoreDiff bit = 0 ,
47+ @ContinueLogs bit = 0 , @RunRecovery bit = 0 , @Debug INT = 0
3948AS
4049SET NOCOUNT ON ;
4150
@@ -178,13 +187,14 @@ IF @ContinueLogs = 0
178187BEGIN
179188 SET @sql = ' RESTORE DATABASE '+ @RestoreDatabaseName+ ' FROM DISK = '' '+ @BackupPathFull + @LastFullBackup+ ' '' WITH NORECOVERY, REPLACE' + @MoveOption+ CHAR (13 );
180189 PRINT @sql;
181- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' RESTORE DATABASE' , @Mode = 1 , @DatabaseName = @Database, @LogToTable = ' Y' , @Execute = ' Y' ;
182- -- get the backup completed data so we can apply tlogs from that point forwards
183-
190+ IF @Debug = 0
191+ EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' RESTORE DATABASE' , @Mode = 1 , @DatabaseName = @Database, @LogToTable = ' Y' , @Execute = ' Y' ;
192+
193+ -- get the backup completed data so we can apply tlogs from that point forwards
184194 SET @sql = REPLACE (@HeadersSQL, ' {Path}' , @BackupPathFull + @LastFullBackup);
185195 PRINT @sql;
186196 EXECUTE (@sql);
187- -- DECLARE @BackupDateTime AS CHAR(15), @FullLastLSN NUMERIC(25, 0);
197+ -- DECLARE @BackupDateTime AS CHAR(15), @FullLastLSN NUMERIC(25, 0); Commented out for testing
188198 SELECT @BackupDateTime = RIGHT (@LastFullBackup, 19 )
189199 SELECT @FullLastLSN = CAST (LastLSN AS NUMERIC (25 , 0 )) FROM #Headers WHERE BackupType = 1 ;
190200 PRINT @BackupDateTime
@@ -214,13 +224,14 @@ WHERE BackupFile LIKE '%.bak'
214224 AND
215225 BackupFile LIKE ' %'+ @Database+ ' %' ;
216226
217- IF @ContinueDiff = 1 AND @BackupDateTime < RIGHT (@LastDiffBackup, 19 )
227+ IF @RestoreDiff = 1 AND @BackupDateTime < RIGHT (@LastDiffBackup, 19 )
218228BEGIN
219229 SET @sql = ' RESTORE DATABASE '+ @RestoreDatabaseName+ ' FROM DISK = '' '+ @BackupPathDiff + @LastDiffBackup+ ' '' WITH NORECOVERY' ;
220230 PRINT @sql;
221- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' RESTORE DATABASE' , @Mode = 1 , @DatabaseName = @Database, @LogToTable = ' Y' , @Execute = ' Y' ;
222- -- get the backup completed data so we can apply tlogs from that point forwards
223-
231+ IF @Debug = 0
232+ EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' RESTORE DATABASE' , @Mode = 1 , @DatabaseName = @Database, @LogToTable = ' Y' , @Execute = ' Y' ;
233+
234+ -- get the backup completed data so we can apply tlogs from that point forwards
224235 SET @sql = REPLACE (@HeadersSQL, ' {Path}' , @BackupPathFull + @LastFullBackup);
225236 PRINT @sql;
226237 EXECUTE (@sql);
@@ -241,7 +252,8 @@ DECLARE BackupFiles CURSOR FOR
241252 FROM @FileList
242253 WHERE BackupFile LIKE ' %.trn'
243254 AND BackupFile LIKE ' %'+ @Database+ ' %'
244- AND (@ContinueLogs = 1 OR (@ContinueLogs = 0 AND LEFT (RIGHT (BackupFile, 19 ), 15 ) >= @BackupDateTime));
255+ AND (@ContinueLogs = 1 OR (@ContinueLogs = 0 AND LEFT (RIGHT (BackupFile, 19 ), 15 ) >= @BackupDateTime))
256+ ORDER BY BackupFile;
245257OPEN BackupFiles;
246258DECLARE @i tinyint = 1 , @LogFirstLSN NUMERIC (25 , 0 ), @LogLastLSN NUMERIC (25 , 0 );
247259-- Loop through all the files for the database
0 commit comments