Проблемы
При восстановлении базы данных из резервной копии с помощью параметра WITH REPLACE в Microsoft SQL Server 2012 физически имена файлов в восстановленной базе данных, которые поступают из резервной копии, могут перезаписаться на имена физических файлов существующей базы данных. Например, предположим, что есть следующий сценарий:
-
У вас есть два экземпляра SQL Server: Instanceing и InstanceB.
-
У вас есть база данных с таким же именем, SQLDB, на каждом экземпляре SQL Server.
-
На экземпляре SQLDB именем файла данных базы данных DB1_InstanceA. mdf и именем файла журнала является DB1_InstanceA. ldf.
-
В InstanceB имя файла базы данных SQLDB — DB1_InstanceB. mdf, а имя файла журнала — DB1_InstanceB. ldf.
-
Вы пытаетесь восстановить резервную копию базы данных SQLDB из экземпляра My из базы данных SQLDB из InstanceB с помощью параметра WITH REPLACE команды RESTORE .
В этом сценарии имена физических файлов в SQLDB для InstanceB изменяются на DB1_InstanceA. mdf и DB1_InstanceA. ldf.
Причина
Это поведение является особенностью SQL Server 2012.
Обходное решение
Для решения этой проблемы не используйте параметр with REplace для команды RESTORE . Вместо этого используйте параметр WITH MOVE .Примечание. Параметр WITH MOVE предоставляет возможность изменить физическое имя файла.
Дополнительная информация
Параметр WITH MOVE необходим только при первом использовании команды RESTORE . При попытке восстановить базу данных из резервной копии SQL Server сравнивает значения разветвления базы данных для восстановления. Затем резервный наборы данных принимают указанные ниже действия в зависимости от того, совпадают ли эти значения.
-
Если найдено соответствие, резервный набор продолжает использовать имена файлов целевой базы данных.
-
Если значения различаются, набор резервных копий заменяет физические имена файлов целевой базы данных с помощью имен из резервного набора.
При использовании параметра WITH MOVE вместе с командой RESTORE выполняются следующие действия:
-
На целевом сервере создается новая вилка восстановления.
-
В следующей операции восстановления идентификаторы разветвления восстановления из набора резервных копий сопоставлены с идентификаторами целевого сервера.
-
Команда RESTORE , используемая вместе с параметром WITH REPLACE , сохраняет физические имена на целевом сервере.
Дополнительные сведения о команде RESTORE см. в разделе Restore (Transact-SQL)