Назад | Перейти на главную страницу

SQL Server, восстановление последней разности

У нас есть сервер разработки, на котором в одночасье выполняется работа по восстановлению резервных копий баз данных. Наш первичный сервер баз данных выполняет резервное копирование баз данных в одночасье, а наш сервер разработки затем восстанавливает эти базы данных, чтобы поддерживать их в актуальном состоянии на ежедневной основе (не на транзакционной основе).

Поскольку размер наших баз данных увеличивается на многие гигабайты, мы сталкиваемся с проблемой, что восстановление занимает много часов в одночасье. Вместо этого мы хотим расширить использование дифференциального резервного копирования и восстановления баз данных.

У меня проблема в том, что сервер разработки выполняет восстановление, но как я могу определить, какой файл выбрать в дифференциальной резервной копии? Вы должны указать файл, например FILE = 9, в операторе восстановления, но что, если я не знаю, какой это файл? Что, если мне просто нужна последняя версия?

Так как же указать последний файл из разностной резервной копии базы данных?

http://msdn.microsoft.com/en-us/library/ms186858.aspx

Ура

Есть несколько различных вариантов автоматизации этого с помощью хранимая процедура / TSQL или сценарий PowerShell (Я бы рекомендовал сценарий PowerShell). Если вы хотите написать свою собственную автоматизацию для этого, вам, в основном, нужно изучить "восстановить только список файлов", который предоставит вам список всех файлов в данном наборе резервных копий (и в этом случае выясните, какой номер файла является самой последней резервной копией diff для имеющейся у вас полной резервной копии).

Обратите внимание: если вы хотите восстановить дифференциал, вам нужно будет восстановить самую последнюю ПОЛНУЮ резервную копию, которая связана с данной резервной копией DIFF, чтобы это работало, или, возможно, оставить восстановленную базу данных разработчика в восстанавливаемой штат.

Например, это сработает:

  • Восстановить полную резервную копию с воскресенья на DEV
  • Восстановить резервную копию diff с понедельника на DEV

это тоже сработает:

  • Восстановить полную резервную копию с воскресенья на DEV
  • Восстановить резервную копию различий со вторника, среды или четверга на DEV

однако это не сработает:

  • Восстановить полную резервную копию с воскресенья на DEV
  • Сделайте полную резервную копию в понедельник на PROD
  • Восстановить резервную копию diff со вторника на DEV

В этом последнем случае вам также нужно будет восстановить полную резервную копию с понедельника на DEV, прежде чем будет разрешено восстановление резервной копии Diff со вторника. Есть исключения (например, если полная резервная копия в понедельник была COPY_ONLY резервная копия и не нарушил цепочку резервного копирования diff). Видеть эта статья для получения более подробной информации об использовании резервных копий DIFF и цепочка восстановления, необходимая для использования.

Вы должны иметь возможность получить запись последней дифференциальной резервной копии и путь к ней из таблицы резервного копирования msdb. Но, как отмечалось выше, если вы хотите восстановить разницу, вам нужно сначала восстановить ее полностью. На этом этапе вам, вероятно, лучше пересмотреть другое решение, такое как доставка журналов или репликация моментальных снимков, или пересмотреть требования.