Применяется к
SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Express SQL Server 2012 Standard SQL Server 2012 Web SQL Server 2012 Enterprise Core

Проблемы

При восстановлении базы данных из резервной копии с помощью параметра 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 выполняются следующие действия:

  1. На целевом сервере создается новая вилка восстановления.

  2. В следующей операции восстановления идентификаторы разветвления восстановления из набора резервных копий сопоставлены с идентификаторами целевого сервера.

  3. Команда RESTORE , используемая вместе с параметром WITH REPLACE , сохраняет физические имена на целевом сервере.

Дополнительные сведения о команде RESTORE см. в разделе Restore (Transact-SQL)

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.