@@ -11,10 +11,10 @@ ALTER PROCEDURE [dbo].[sp_DatabaseRestore]
1111 @MoveDataDrive NVARCHAR (260 ) = NULL ,
1212 @MoveLogDrive NVARCHAR (260 ) = NULL ,
1313 @MoveFilestreamDrive NVARCHAR (260 ) = NULL ,
14- @MoveFullTextCatalogDrive NVARCHAR (260 ) = NULL ,
15- @BufferCount INT = NULL ,
16- @MaxTransferSize INT = NULL ,
17- @BlockSize INT = NULL ,
14+ @MoveFullTextCatalogDrive NVARCHAR (260 ) = NULL ,
15+ @BufferCount INT = NULL ,
16+ @MaxTransferSize INT = NULL ,
17+ @BlockSize INT = NULL ,
1818 @TestRestore BIT = 0 ,
1919 @RunCheckDB BIT = 0 ,
2020 @RestoreDiff BIT = 0 ,
@@ -27,15 +27,15 @@ ALTER PROCEDURE [dbo].[sp_DatabaseRestore]
2727 @StopAt NVARCHAR (14 ) = NULL ,
2828 @OnlyLogsAfter NVARCHAR (14 ) = NULL ,
2929 @SimpleFolderEnumeration BIT = 0 ,
30- @SkipBackupsAlreadyInMsdb BIT = 0 ,
31- @DatabaseOwner sysname = NULL ,
32- @SetTrustworthyON BIT = 0 ,
30+ @SkipBackupsAlreadyInMsdb BIT = 0 ,
31+ @DatabaseOwner sysname = NULL ,
32+ @SetTrustworthyON BIT = 0 ,
3333 @Execute CHAR (1 ) = Y,
34- @FileExtensionDiff NVARCHAR (128 ) = NULL ,
34+ @FileExtensionDiff NVARCHAR (128 ) = NULL ,
3535 @Debug INT = 0 ,
3636 @Help BIT = 0 ,
3737 @Version VARCHAR (30 ) = NULL OUTPUT ,
38- @VersionDate DATETIME = NULL OUTPUT ,
38+ @VersionDate DATETIME = NULL OUTPUT ,
3939 @VersionCheckMode BIT = 0
4040AS
4141SET NOCOUNT ON ;
@@ -899,7 +899,7 @@ BEGIN
899899 /* now take split backups into account */
900900 IF (SELECT COUNT (* ) FROM #SplitFullBackups) > 0
901901 BEGIN
902- RAISERROR (' Split backups found' , 0 , 1 ) WITH NOWAIT ;
902+ IF @Debug = 1 RAISERROR (' Split backups found' , 0 , 1 ) WITH NOWAIT ;
903903
904904 SET @sql = N ' RESTORE DATABASE ' + @RestoreDatabaseName + N ' FROM '
905905 + STUFF (
@@ -1092,7 +1092,7 @@ BEGIN
10921092
10931093 IF (SELECT COUNT (* ) FROM #SplitDiffBackups) > 0
10941094 BEGIN
1095- RAISERROR (' Split backups found' , 0 , 1 ) WITH NOWAIT ;
1095+ IF @Debug = 1 RAISERROR (' Split backups found' , 0 , 1 ) WITH NOWAIT ;
10961096 SET @sql = N ' RESTORE DATABASE ' + @RestoreDatabaseName + N ' FROM '
10971097 + STUFF (
10981098 (SELECT CHAR ( 10 ) + ' ,DISK='' ' + BackupPath + BackupFile + ' '' '
@@ -1374,7 +1374,7 @@ BEGIN
13741374 AND REPLACE ( RIGHT ( REPLACE ( fl .BackupFile , RIGHT ( fl .BackupFile , PATINDEX ( ' %_[0-9][0-9]%' , REVERSE ( fl .BackupFile ) ) ), ' ' ), 16 ), ' _' , ' ' ) > @StopAt
13751375 ORDER BY BackupFile;
13761376 END
1377-
1377+
13781378 IF @ExtraLogFile IS NULL
13791379 BEGIN
13801380 DELETE fl
@@ -1385,6 +1385,10 @@ BEGIN
13851385 END
13861386 ELSE
13871387 BEGIN
1388+ -- If this is a split backup, @ExtraLogFile contains only the first split backup file, either _1.trn or _01.trn
1389+ -- Change @ExtraLogFile to the max split backup file, then delete all log files greater than this
1390+ SET @ExtraLogFile = REPLACE (REPLACE (@ExtraLogFile, ' _1.trn' , ' _9.trn' ), ' _01.trn' , ' _64.trn' )
1391+
13881392 DELETE fl
13891393 FROM @FileList AS fl
13901394 WHERE BackupFile LIKE N ' %.trn'
@@ -1447,7 +1451,7 @@ WHERE BackupFile IS NOT NULL;
14471451
14481452 IF (SELECT COUNT ( * ) FROM #SplitLogBackups WHERE DenseRank = @LogRestoreRanking) > 1
14491453 BEGIN
1450- RAISERROR (' Split backups found' , 0 , 1 ) WITH NOWAIT ;
1454+ IF @Debug = 1 RAISERROR (' Split backups found' , 0 , 1 ) WITH NOWAIT ;
14511455 SET @sql = N ' RESTORE LOG ' + @RestoreDatabaseName + N ' FROM '
14521456 + STUFF (
14531457 (SELECT CHAR ( 10 ) + ' ,DISK='' ' + BackupPath + BackupFile + ' '' '
0 commit comments