@@ -756,7 +756,7 @@ BEGIN
756756 PRINT @sql;
757757 END ;
758758 IF @Debug IN (0 , 1 ) AND @Execute = ' Y' AND DATABASEPROPERTYEX (@RestoreDatabaseName,' STATUS' ) != ' RESTORING'
759- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' ALTER DATABASE SINGLE_USER' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
759+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' , @ Command = @sql, @CommandType = ' ALTER DATABASE SINGLE_USER' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
760760 END
761761 IF @ExistingDBAction IN (2 , 3 )
762762 BEGIN
@@ -775,7 +775,7 @@ BEGIN
775775 PRINT @sql;
776776 END ;
777777 IF @Debug IN (0 , 1 ) AND @Execute = ' Y'
778- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' KILL CONNECTIONS' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
778+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' , @ Command = @sql, @CommandType = ' KILL CONNECTIONS' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
779779 END
780780 IF @ExistingDBAction = 3
781781 BEGIN
@@ -788,7 +788,7 @@ BEGIN
788788 PRINT @sql;
789789 END ;
790790 IF @Debug IN (0 , 1 ) AND @Execute = ' Y'
791- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' DROP DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
791+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' , @ Command = @sql, @CommandType = ' DROP DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
792792 END
793793 IF @ExistingDBAction = 4
794794 BEGIN
@@ -801,7 +801,7 @@ BEGIN
801801 PRINT @sql;
802802 END ;
803803 IF @Debug IN (0 , 1 ) AND @Execute = ' Y' AND DATABASEPROPERTYEX (@RestoreDatabaseName,' STATUS' ) != ' RESTORING'
804- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' OFFLINE DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
804+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' , @ Command = @sql, @CommandType = ' OFFLINE DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
805805 END ;
806806 END
807807 ELSE
@@ -855,7 +855,7 @@ BEGIN
855855 END ;
856856
857857 IF @Debug IN (0 , 1 ) AND @Execute = ' Y'
858- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' RESTORE DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
858+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' , @ Command = @sql, @CommandType = ' RESTORE DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
859859
860860 -- We already loaded #Headers above
861861
@@ -1038,7 +1038,7 @@ BEGIN
10381038 PRINT @sql;
10391039 END ;
10401040 IF @Debug IN (0 , 1 ) AND @Execute = ' Y'
1041- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' RESTORE DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
1041+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' , @ Command = @sql, @CommandType = ' RESTORE DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
10421042
10431043 -- get the backup completed data so we can apply tlogs from that point forwards
10441044 SET @sql = REPLACE (@HeadersSQL, N ' {Path}' , @CurrentBackupPathDiff + @LastDiffBackup);
@@ -1186,16 +1186,24 @@ BEGIN
11861186 END
11871187 /* End folder sanity check*/
11881188
1189-
1189+ IF @Debug = 1
1190+ BEGIN
1191+ SELECT * FROM @FileList WHERE BackupFile IS NOT NULL ;
1192+ END
1193+
11901194IF @SkipBackupsAlreadyInMsdb = 1
11911195BEGIN
1196+
11921197 SELECT TOP 1 @LogLastNameInMsdbAS = bf .physical_device_name
1193- FROM msdb .dbo .backupmediafamily bf
1194- WHERE physical_device_name like @BackupPathLog + ' %'
1195- ORDER BY physical_device_name DESC
1198+ FROM msdb .dbo .backupmediafamily bf
1199+ INNER JOIN msdb .dbo .backupset bs ON bs .media_set_id = bf .media_set_id
1200+ INNER JOIN msdb .dbo .restorehistory rh ON rh .backup_set_id = bs .backup_set_id
1201+ WHERE physical_device_name like @BackupPathLog + ' %'
1202+ AND rh .destination_database_name = @UnquotedRestoreDatabaseName
1203+ ORDER BY physical_device_name DESC
11961204
11971205 IF @Debug = 1
1198- BEGIN
1206+ BEGIN
11991207 SELECT ' Keeping LOG backups with name > : ' + @LogLastNameInMsdbAS
12001208 END
12011209
@@ -1204,10 +1212,7 @@ BEGIN
12041212 WHERE fl .BackupPath + fl .BackupFile <= @LogLastNameInMsdbAS
12051213END
12061214
1207- IF @Debug = 1
1208- BEGIN
1209- SELECT * FROM @FileList WHERE BackupFile IS NOT NULL ;
1210- END
1215+
12111216
12121217IF (@OnlyLogsAfter IS NOT NULL )
12131218BEGIN
@@ -1359,7 +1364,7 @@ WHERE BackupFile IS NOT NULL;
13591364 END ;
13601365
13611366 IF @Debug IN (0 , 1 ) AND @Execute = ' Y'
1362- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' RESTORE LOG' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
1367+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' , @ Command = @sql, @CommandType = ' RESTORE LOG' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
13631368 END ;
13641369
13651370 SET @LogRestoreRanking + = 1 ;
@@ -1384,7 +1389,7 @@ IF @RunRecovery = 1
13841389 END ;
13851390
13861391 IF @Debug IN (0 , 1 ) AND @Execute = ' Y'
1387- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' RECOVER DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
1392+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' , @ Command = @sql, @CommandType = ' RECOVER DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
13881393 END ;
13891394
13901395-- Ensure simple recovery model
@@ -1399,7 +1404,7 @@ IF @ForceSimpleRecovery = 1
13991404 END ;
14001405
14011406 IF @Debug IN (0 , 1 ) AND @Execute = ' Y'
1402- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' SIMPLE LOGGING' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
1407+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' , @ Command = @sql, @CommandType = ' SIMPLE LOGGING' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
14031408 END ;
14041409
14051410 -- Run checkdb against this database
@@ -1414,7 +1419,7 @@ IF @RunCheckDB = 1
14141419 END ;
14151420
14161421 IF @Debug IN (0 , 1 ) AND @Execute = ' Y'
1417- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' DBCC CHECKDB' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
1422+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' , @ Command = @sql, @CommandType = ' DBCC CHECKDB' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
14181423 END ;
14191424
14201425
@@ -1433,7 +1438,7 @@ IF @DatabaseOwner IS NOT NULL
14331438 END ;
14341439
14351440 IF @Debug IN (0 , 1 ) AND @Execute = ' Y'
1436- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' ALTER AUTHORIZATION' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
1441+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' ,@ Command = @sql, @CommandType = ' ALTER AUTHORIZATION' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
14371442 END
14381443 ELSE
14391444 BEGIN
@@ -1458,7 +1463,7 @@ IF @TestRestore = 1
14581463 END ;
14591464
14601465 IF @Debug IN (0 , 1 ) AND @Execute = ' Y'
1461- EXECUTE @sql = [dbo].[CommandExecute] @Command = @sql, @CommandType = ' DROP DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
1466+ EXECUTE @sql = [dbo].[CommandExecute] @DatabaseContext = N ' master' ,@ Command = @sql, @CommandType = ' DROP DATABASE' , @Mode = 1 , @DatabaseName = @UnquotedRestoreDatabaseName, @LogToTable = ' Y' , @Execute = ' Y' ;
14621467
14631468 END ;
14641469
0 commit comments