Skip to content

Commit e9fb77b

Browse files
authored
Merge pull request #1040 from BrentOzarULTD/sp_DatabaseRestore_977
Fixes two restore issues
2 parents 11a9309 + 45d4723 commit e9fb77b

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

sp_DatabaseRestore.sql

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -325,10 +325,30 @@ IF (SELECT RIGHT(@BackupPathLog, 1)) <> '\' --Has to end in a '\'
325325
SET @BackupPathLog += N'\';
326326
END;
327327

328+
/*Move Data File*/
329+
IF (SELECT RIGHT(@MoveDataDrive, 1)) <> '\' --Has to end in a '\'
330+
BEGIN
331+
RAISERROR('Fixing @MoveDataDrive to add a "\"', 0, 1) WITH NOWAIT;
332+
SET @MoveDataDrive += N'\';
333+
END;
334+
335+
/*Move Log File*/
336+
IF (SELECT RIGHT(@MoveLogDrive, 1)) <> '\' --Has to end in a '\'
337+
BEGIN
338+
RAISERROR('Fixing @MoveDataDrive to add a "\"', 0, 1) WITH NOWAIT;
339+
SET @MoveLogDrive += N'\';
340+
END;
341+
328342

329343

330344
IF @RestoreDatabaseName IS NULL
331-
SET @RestoreDatabaseName = @Database;
345+
BEGIN
346+
SET @RestoreDatabaseName = QUOTENAME(@Database);
347+
END
348+
ELSE
349+
BEGIN
350+
SET @RestoreDatabaseName = QUOTENAME(@RestoreDatabaseName)
351+
END
332352

333353

334354
IF @BackupPathFull IS NOT NULL
@@ -460,12 +480,16 @@ IF @MoveFiles = 1
460480
CASE
461481
WHEN Type = 'D' THEN @MoveDataDrive
462482
WHEN Type = 'L' THEN @MoveLogDrive
463-
END + REVERSE(LEFT(REVERSE(PhysicalName), CHARINDEX('\', REVERSE(PhysicalName), 1) -1)) + '''' AS logicalcmds
483+
END + CASE WHEN @Database = @RestoreDatabaseName THEN REVERSE(LEFT(REVERSE(PhysicalName), CHARINDEX('\', REVERSE(PhysicalName), 1) -1)) + ''''
484+
ELSE REPLACE(REVERSE(LEFT(REVERSE(PhysicalName), CHARINDEX('\', REVERSE(PhysicalName), 1) -1)), @Database, SUBSTRING(@RestoreDatabaseName, 2, LEN(@RestoreDatabaseName) -2)) + ''''
485+
END AS logicalcmds
464486
FROM #FileListParameters)
465487

466488
SELECT @MoveOption = @MoveOption + Files.logicalcmds
467489
FROM Files;
468-
490+
491+
IF @Debug = 1 PRINT @MoveOption
492+
469493
END;
470494

471495

@@ -516,7 +540,7 @@ ELSE
516540
SELECT @DatabaseLastLSN = CAST(f.redo_start_lsn AS NUMERIC(25, 0))
517541
FROM master.sys.databases d
518542
JOIN master.sys.master_files f ON d.database_id = f.database_id
519-
WHERE d.name = @RestoreDatabaseName AND f.file_id = 1;
543+
WHERE d.name = SUBSTRING(@RestoreDatabaseName, 2, LEN(@RestoreDatabaseName) - 2) AND f.file_id = 1;
520544

521545
END;
522546

0 commit comments

Comments
 (0)