Невозможно сделать дифференциальное резервное копирование с помощью SQL Server VSS Writer - PullRequest
0 голосов
/ 07 апреля 2011

Я пытался разработать инструмент для резервного копирования / восстановления MS SQL Server с использованием SQL Server VSS Writer. Я не могу заставить работать дифференциальную резервную копию! Мне просто любопытно, делал ли кто-нибудь дифференциальное резервное копирование, используя VSS. Вот что я делаю:

  1. Создайте полную резервную копию и сохраните файлы и связанный с ними документ компонента Backup.
  2. Обновить таблицы в базе данных.
  3. Создайте новую резервную копию, установив ' SetBackupState ' как VSS_BT_DIFFERENTIAL
  4. Теперь при добавлении существующих компонентов в документ компонента резервного копирования я нахожу метку времени компонента из документа на шаге 1, а затем вызываю его с помощью ' SetPreviousBackupStamp '
  5. Теперь, после создания снимка, я прохожу каждый из компонентов и вызываю API GetPartialFileCount . Это всегда возвращает значение 0. Я предполагаю, что если в существующем компоненте произошли изменения, значение должно быть больше 0.

Я что-то здесь упускаю? Нужно ли нам запускать SQL Server VSS Writer, используя определенные параметры или что-то еще? Я пробовал разные конфигурации, включая (Windows Server 2008 / SQL Server 2008)

1 Ответ

2 голосов
/ 02 июня 2011

Я давно хотел обновить этот пост, но был связан со всеми ошибками, которые я обнаружил в программе.Несколько человек из Microsoft помогли мне понять проблему, с которой я столкнулся.Я просто хочу поблагодарить Дилипа и Рамеша (я опускаю их фамилии по понятным причинам) за помощь в преодолении этого.

Вот мои выводы:

  • SQL VSS Writer поддерживает разностное резервное копирование.

  • При создании разностного резервирования не включайте «главный» компонент в качестве компонента для резервного копирования.

  • Всегда проверять наличие ошибки состояния Writer после каждой фазы, используя следующую последовательность API: GatherWriterStatus (), GetWriterStatusCount (), GetWriterStatus ()

  • Если состояние модуля записи указывает на ошибку, изтам что-то непредсказуемо.

  • Лучшее место, чтобы начать искать работу - это ЛУЧШИЙ исходный код, доступный как часть VSS SDK.

  • BETest позволяет создавать резервные копии одной базы данных (полная / дифференциальная) и восстанавливать (полная / дифференциальная), при условии, что вы правильно выбрали параметр / C.Синтаксис компонентов: «{Writer Id}»: «Полное имя компонента» Например, для базы данных «Персона» на моем компьютере файл информации о моем компоненте содержал: «{A65FAA63-5EA8-4EBC-9DBD-A0C4DB26912A}»: «ABP-PC \ SQLEXPRESS \ Person ";

  • При выполнении дифференциального восстановления полное восстановление необходимо выполнить с параметром" / AdditionalRestores ".

Надеюсь, это поможет.Если кому-то понадобится помощь, обновите этот пост, и я получу уведомление.Я помогу.

...