Как восстановить резервную копию sql-сервера, содержащую данные потока, назначая новое имя папки для данных потока данных?

99
8

Чтобы создать новую базу данных и заполнить ее из резервной копии, я обычно делаю:


CREATE DATABASE MyDatabase -- I create an empty database

-- I retrieve the filepath of mdf and ldf files
DECLARE @FileData varchar(1000)
DECLARE @FileLog varchar(1000)

set @FileData = (select filename from MyDatabase.dbo.sysfiles where fileid = 1)
set @FileLog = (select filename from MyDatabase.dbo.sysfiles where fileid = 2)

-- I Restore the database from backup by substituting the mdf and ldf files
RESTORE DATABASE MyDatabase
FROM DISK = 'c:\Test\Test.bak'
WITH REPLACE,
MOVE 'MyApp_Data' TO @FileData, -- I forced the name to be MyApp_Data for simplicity
MOVE 'MyApp_Log' TO @FileLog -- I forced the name to be MyApp_Log for simplicity


Как сделать то же самое для данных фильтра? Могу ли я создать создание папки для данных потока или создать его вручную?


Можете ли вы также прокомментировать мой подход?

спросил(а) 2021-01-25T17:47:39+03:00 4 месяца, 4 недели назад
1
Решение
76

Я думаю, вы также можете использовать опцию MOVE с данными потока. Вы можете запустить следующую команду, чтобы просмотреть список файлов в вашем файле резервной копии. Это поможет определить файл filestream.


RESTORE FILELISTONLY
FROM DISK = 'c:\Test\Test.bak'

Что касается вашего общего подхода, я думаю, вы можете делать больше, чем вам нужно. Вам не нужно создавать базу данных, прежде чем восстанавливать резервную копию. Команда RESTORE позаботится о шагах создания базы данных.


Итак, ваша команда RESTORE будет такой же, как ваша, за исключением того, что вы можете исключить опцию REPLACE. Вы можете указать информацию своего целевого файла в опции MOVE.

ответил(а) 2021-01-25T17:47:39+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема