powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновление тестовой базы данных
3 сообщений из 3, страница 1 из 1
Обновление тестовой базы данных
    #39920125
Chitago
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет,

сам не местный, всю жизнь с Oracle, но с некоторых пор появился и SQL Server.

Есть задача обновления тестовой БД с продуктивной на конкретное время.

Резервное копирование на продуктивной выполняется по следущему расписанию:
1. Full - воскресенье вечер
2. Differential - каждый вечер, кроме воскресенья
3. Logs - каждые 15 минут (TRN файлы)

Для примера возьмём сегодня, 14:00 как время, на которое должно быть обновлена тестовая БД.

В целом есть понимание, что надо восстановить ближайший Full, потом Differential понедельника и вторника, а потом уже все необходимые логи.

Нет понимания по двум вопросам:

1. Как востанавливать Differential бэкапы - какие команды?
Для восстановления FULL использовалась такая команда:
Код: sql
1.
2.
3.
4.
5.
6.
7.
USE [master]
RESTORE DATABASE [TEST] FROM  DISK = N'\\BACKUPS\PRODUCTION\PROD\FULL\PROD_FULL.bak' WITH  FILE = 1,
MOVE N'PRODDATA1' TO N'D:\DBData01\TESTDATA1.mdf',
MOVE N'PRODDATA2' TO N'D:\Data\TESTDATA2.ndf',
MOVE N'PRODLOG1' TO N'D:\Log\TESTLOG1.ldf',
NORECOVERY,  NOUNLOAD,  STATS = 5
GO



Соответственно, в папке \\BACKUPS\PRODUCTION\PROD\DIFF\ лежит несколько файлов Differential бэкапов.

2. Как правильно востанавливать логи.
Точнее как программно (запрос или какая-нибудь команда) узнать при восстановлении какого лога надо будет использовать WITH NORECOVERY, STOPAT = 'Jan 29, 2020 2:00 PM' .

Спасибо.
...
Рейтинг: 0 / 0
Обновление тестовой базы данных
    #39920142
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chitago
В целом есть понимание, что надо восстановить ближайший Full, потом Differential понедельника и вторника, а потом уже все необходимые логи.



Неверное понимание. Diff всегда делается относительно последнего FULL, а значит восстанавливать два Diff-а не нужно (да и не получится).
Цепочка полного восстановления такая

FULL - DIFF (его может и не быть) - Log[N]...Log[N+M]



Chitago
Соответственно, в папке \\BACKUPS\PRODUCTION\PROD\DIFF\ лежит несколько файлов Differential бэкапов.

2. Как правильно востанавливать логи.
Точнее как программно (запрос или какая-нибудь команда) узнать при восстановлении какого лога надо будет использовать WITH NORECOVERY, STOPAT = 'Jan 29, 2020 2:00 PM' .

Спасибо.

Если нужно генерить программно, то анализируйте инфу, полученную через RESTORE HEADERONLY по каждому файлу бекапа (full/diff/log)

Если достаточно ручного, то при restore через SSMS можно выбирать все файлы, указать на какой момент времени восстановить данные, и он (SSMS) сам сгенерить правильный скрипт
...
Рейтинг: 0 / 0
Обновление тестовой базы данных
    #39920143
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обновление тестовой базы данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]