2011-12-15 2 views
0

я использую следующую строку для резервного копирования Microsoft SQL Server 2008 базы данных:Резервного копирования базы данных SQL Server без меток времени

BACKUP DATABASE @name TO DISK = @fileName WITH COMPRESSION 

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

Как создать повторяющиеся резервные копии SQL Server из той же неизменной базы данных, которая предоставила бы точные файлы с байтом? Я полагаю, что простые вызовы BACKUP DATABASE добавляют некоторые временные метки или некоторую другую метаинформацию на резервном носителе, есть ли способ отключить или удалить это дополнение?

В противном случае, если это невозможно, существует ли относительно простой способ сравнения 2 резервных копий и посмотреть, будут ли они восстанавливать точно такое же состояние базы данных?

ОБНОВЛЕНИЕ: Моя точка зрения для сравнения резервных копий заключается в том, что я ежедневно создаю множество массивов баз данных, но большинство баз данных не так часто меняются. Это нормально, когда большинство из них меняются несколько раз в год. Таким образом, в основном, для всех других СУБД (MySQL, PostgreSQL, Монго), я использую следующий алгоритм:

  • сделать новую ежедневную резервную копию
  • Diff новую резервную копию с самым последним из старых резервных копий
  • Если база данных не была изменена (т.е. подпорка матч), удалите новую ежедневную резервную копию я только что создал

Этот алгоритм работает со всей DBMSes мы встречались раньше, но, увы, она не потому, что неповторяющихся резервных копий MSSQL.

ответ

0

Как вы считаете, часть каталога резервного копирования включает дату и время резервного копирования. Опция WITH COMPRESSION сжимает резервную копию, чтобы сэкономить место, но небольшое изменение в файле вызовет изменения во всем файле из-за того, как работают алгоритмы сжатия.

Если вы не хотите так много различий, удалите опцию compress, но сравнение файлов резервных копий - это не путь.

Если у вас есть база данных, которая мало меняет, то инкрементное или дифференциальное резервное копирование может быть более полезным.

Однако вы, похоже, попали в классическую ловушку под названием XY Problem, поскольку вы спрашиваете о своем попытке решения, а не о вашей реальной проблеме. Что подсказывает вам попробовать и сравнить базы данных?

+0

Я пытался пропустить сжатие, это не помогает - файлы по-прежнему отличаются. Моим первоначальным намерением для этого сравнения была оптимизация резервного копирования, я добавил подробное описание моего алгоритма резервного копирования в вопросе. – GreyCat

+1

Информация метаданных записывается в заголовок мультимедиа с использованием формата Microsoft Tape, см. Http://msdn.microsoft.com/en-us/library/ms178062.aspx. Я не думаю, что есть способ разделить эти два, если только вы используете сторонний инструмент резервного копирования. –

+0

Есть ли способ работать с ним? Например, чтобы вычислить какой-то хэш, который бы показал, что состояние базы данных изменилось? – GreyCat