Обычно, когда мы запускаем резервное копирование, мы не разрешаем вносить изменения, иначе база данных будет недоступна. Я имею в виду, что база данных будет в однопользовательском режиме, но я хочу начать резервное копирование и выпустить БД для использования. Кроме того, после запуска резервного копирования я не хочу, чтобы текущие изменения записывались в файл резервной копии. Я хочу знать, как я могу добиться этого в Microsoft SQL Server 2012. Пожалуйста, помогите мне.
Что ж, позвольте мне сначала объяснить мою проблему. В настоящее время я устанавливаю базу данных в однопользовательский режим, пока резервное копирование не будет завершено. Этот режим будет служить моей цели - избежать изменений данных во время резервного копирования. Но мое приложение связано с несколькими базами данных (каждая база данных взаимосвязана, и существуют базы данных var dbs, которые создаются ежемесячно). Поэтому резервное копирование всех этих баз данных стало утомительным процессом, и что более важно, я должен держать пользователей вне системы во время резервного копирования.
Поэтому я ищу механизм резервного копирования, который будет соответствовать нижеуказанным требованиям.
- Начните резервное копирование всех БД одновременно и выпустите БД для использования.
- Поскольку базы данных связаны друг с другом, я хочу, чтобы согласованность данных поддерживалась в файлах резервных копий. Поэтому из-за этого требования согласованности данных я не хочу вносить изменения в мой файл резервной копии.
Все, что я хочу, - это резервное копирование всех БД в данный момент времени.
источник
Ответы:
Я предполагаю, что ваша задача - создать набор резервных копий, в котором вы можете восстановить все из них в одну статическую (без открытых транзакций) точку (все синхронизировано). Подобно тому, что точка покоя сделает для вас в DB2. К сожалению, в SQL Server нет ничего, что делает именно это. Однако, если ваши базы данных находятся в режиме полного восстановления, вы можете сделать что-то подобное.
Вы можете создать одну
MARKED
транзакцию для всех баз данных одновременно . Затем вы делаете резервную копию журнала транзакций каждой базы данных. Предполагая, что вы не отставали от своих резервных копий журналов (которые должны быть в любом случае), резервные копии журналов не занимают много времени. И нет необходимости останавливать кого-либо в системе (за исключением, может быть, достаточно долго, чтобы создать помеченную транзакцию).На данный момент, если вам нужно сделать восстановление, то вы делаете
RESTORE STOPBEFOREMARK
на каждой из ваших баз данных. Это восстановит все базы данных в одну точку (в зависимости от вашей транзакции). Примечание. Существует также STOPATMARK, если вы хотите включить эту транзакцию.Если вы хотите пример, у меня есть один в ссылке выше вместе с небольшим дополнительным чтением.
Я понимаю, что это не совсем отвечает на ваш вопрос, но, надеюсь, это решит вашу проблему.
источник
Ваш вопрос похож на тот, на который я ответил - Резервное копирование и восстановление 10-20 баз данных SQL Server в синхронное состояние?
Предполагая, что ваша модель восстановления базы данных FULL, вы должны сделать полную резервную копию и затем использовать помеченные транзакции .
Давайте развенчаем ваши мифы ...
Из мифов о резервном копировании (настоятельно советую прочитать все мифы о резервном копировании) :
Помеченные транзакции помогут вам сделать последовательное резервное копирование журнала, и вы сможете восстановить их с помощью
RESTORE ... WITH STOPBEFOREMARK = '<mark_name>'
Помните, что отмеченные транзакции для всех баз данных в экземпляре также записываются в
dbo.logmarkhistory
таблицуMSDB
базы данных.источник
для получения более подробной информации: https://blogs.technet.microsoft.com/letsdothis/2013/11/06/backup-multiple-sql-databases-in-a-single-swoop/
источник