Резервное копирование и восстановление БД без FILESTREAM SQL Server

Есть база данных, которая хранит в себе файлы в поле типа Image. Хотелось бы разгрузить базу и файлы перегнать в файловое хранилище FILESTREAM. Создал доп поля с типами uniqueidentifier и varbinary(MAX) со свойством FILESTREAM, создал хранилище на жестком диске и перегнал туда файлы. Сделал бэкап базы с FILESTREAM и она стала в разы больше (с 18 до 65 гб). Разве размер самой базы не должен уменьшиться (разумеется поле Image я почистил), так как файлы по идее теперь хранятся не в памяти базы, а в файловой системе? Покопавшись понял, что сама база весит 2.5 гб + хранилище около 60 гб. При бэкапе, затягивается все вместе. Интересен вопрос, возможно ли как-то отключить путь к хранилищу с файлами, забэкапить онли базу, разбэкапить на другой машине и после указать снова указать путь к хранилищу. Или это делается как-то по другому? Сори если что, в этом вопросе только начал разбираться, буду благодарен помощи)


Читал, что для бэкапа без хранилища FILESTREAm нужно делать частичное копирование. Попробовал забэкапить только группу PRIMARY

BACKUP DATABASE [IspolkomPermitProc]
FILEGROUP = 'PRIMARY'
TO DISK = 'D:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc.bak' WITH INIT

На другом серве восстанавливаю:

restore database IspolkomPermitProc from disk = 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc.bak'
with move 'IspolkomPermitProc' to 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc.mdf',
move 'IspolkomPermitProc_log' to 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc_log.ldf',
replace

вылетает ошибка:

Msg 3234, Level 16, State 2, Line 1
Logical file 'IspolkomPermitProc' is not part of database 'IspolkomPermitProc'. Use RESTORE FILELISTONLY to list the logical file names.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

Пробовал разбэкапить так:

restore FILELISTONLY from disk = 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc.bak'
with move 'IspolkomPermitProc' to 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc.mdf',
move 'IspolkomPermitProc_log' to 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc_log.ldf',
replace

Вылетает другая ошибка:

Msg 3032, Level 16, State 2, Line 1
One or more of the options (replace, move) are not supported for this statement. Review the documentation for supported options.

Так же сделал бэкап логов:

BACKUP LOG [IspolkomPermitProc] TO DISK = 'D:\BackupSQL\IspolkomPermitProc\Log.bak' WITH NORECOVERY

И так восстанавливать:

RESTORE DATABASE IspolkomPermitProc FILEGROUP='Primary' FROM disk = 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc.bak' 
with move 'IspolkomPermitProc' to 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc.mdf',
move 'IspolkomPermitProc_log' to 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc_log.ldf',
PARTIAL, NORECOVERY  
RESTORE LOG IspolkomPermitProc FROM disk = 'C:\BackupSQL\IspolkomPermitProc\Log.bak'  WITH NORECOVERY 

И вылетает такая ошибка:

Msg 3154, Level 16, State 4, Line 1
The backup set holds a backup of a database other than the existing 'IspolkomPermitProc' database.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.
Msg 3154, Level 16, State 4, Line 5
The backup set holds a backup of a database other than the existing 'IspolkomPermitProc' database.
Msg 3013, Level 16, State 1, Line 5
RESTORE LOG is terminating abnormally.

Кто-то сталкивался с таким? Как правильно разбэкапить базу без FILESTREAM, не пойму..


Ответы (1 шт):

Автор решения: erleug

Если кому будет интересно и полезно в будущем. Ошибка была в правильности логических имен, которые я использовал при разбэкапе базы.

Для начала получил правильные логические имена файлов, которые нужно использовать при восстановлении:

restore FILELISTONLY from disk = 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc.bak'  

И после уже сделал восстановление базы:

restore DATABASE IspolkomPermitProc from disk = 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc.bak'
with move 'IspolkomPermitProc_Data' to 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc.mdf',
move 'IspolkomPermitProc_Log' to 'C:\BackupSQL\IspolkomPermitProc\IspolkomPermitProc_log.ldf',
replace 
→ Ссылка