Якщо ви використовуєте підхід до сценарію і маєте помилку стосовно файлів LDF та MDF, спочатку ви можете запитати файл резервної копії для логічних імен (та інших деталей) файлів у наборі резервних копій, використовуючи наступне:
-- Queries the backup file for the file list in backup set, where Type denotes
-- type of file. Can be L,D,F or S
-- info: https://docs.microsoft.com/en-us/sql/t-sql/statements/restore-statements-filelistonly-transact-sql
RESTORE FILELISTONLY FROM DISK = 'C:\Temp\DB_backup.bak'
GO
Ви отримаєте результати, подібні до таких:
І тоді ви можете використовувати ці логічні імена у запитах:
-- Script assumes you want MDF and LDF files restored on separate drives. Modify for your scenario
RESTORE DATABASE DB
FROM DISK='C:\Temp\DB_backup.bak'
WITH REPLACE,
MOVE 'DB' TO 'E:\MSSQL\Data\DB.mdf', -- "DB" is the mdf logical name from query above
MOVE 'DB_log' TO 'F:\MSSQL\Logs\DB.ldf'; -- "DB_log" is LDF logical name from query above
Більше інформації RESTORE FILELISTONLY
можна знайти в документах SQL Server .
WITH MOVE
, і вона була виправлена за допомогоюWITH REPLACE, MOVE
.