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

Что произойдет с активными подключениями к моей базе данных SQL Server, если я создаю резервную копию журнала транзакций с параметром NORECOVERY?

Немного предыстории: я переношу свои базы данных SQL Server на новый компьютер и написал несколько сценариев Powershell для асинхронной отправки / применения полных резервных копий и журналов транзакций на новый сервер, но мой вопрос касается резервных копий хвостовых журналов. В конце концов, мне нужно, чтобы моя исходная БД была недоступна для пользователей, чтобы я мог создать резервную копию хвостового журнала и применить ее к новому экземпляру.

Что произойдет с активными подключениями, если я сделаю что-то вроде этого:

Backup-SqlDatabase -ServerInstance $serverInstance -Database $db -BackupAction Log -NoRecovery -Credential $credential -BackupFile $backupFile

Или аналогично:

BACKUP LOG <db> TO DISK = <path> WITH NORECOVERY

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

Мне любопытно узнать, что здесь происходит, но я был бы очень признателен за любые другие соответствующие советы относительно моего процесса. Заранее спасибо!

Резервное копирование хвостового журнала приведет к тому, что база данных станет недоступной (NORECOVERY) или доступной только для чтения (STANDBY). Что ожидается, если мне нужно вытащить активную часть файла журнала. Если вы этого не сделаете, все равно можно будет записывать в файл журнала, и вы потеряете согласованность.

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