Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как сымитировать полный бекап БД?  [new]
Vpsem
Member

Откуда: Киев
Сообщений: 54
Есть необходимость делать бекапы журналов транзакций большой БД которая восстановлена из бекапа. Тратить время на её полный бекап, даже в NUL, нет желания. Как сказать SQL серверу что полный бекап уже сделан?
ПС: нужно для CDC (Change Data Capture).
22 июн 16, 10:26    [19321751]     Ответить | Цитировать Сообщить модератору
 Re: Как сымитировать полный бекап БД?  [new]
o-o
Guest
если база восстановлена из бэкапа, бэкап у ней уже был.
его не надо имитировать.
база о нем знает,
а вы можете в этом убедиться, выполнив
select last_log_backup_lsn
from msdb.sys.database_recovery_status
where db_name(database_id) = 'your_db' 
22 июн 16, 10:46    [19321829]     Ответить | Цитировать Сообщить модератору
 Re: Как сымитировать полный бекап БД?  [new]
Vpsem
Member

Откуда: Киев
Сообщений: 54
Проблема в том что после рестора некоторые операции всё же сделаны, и теперь:
BACKUP LOG cannot be performed because there is no current database backup.
То что нужно сделать full backup знаю, но можно ли это обойти?
22 июн 16, 11:00    [19321883]     Ответить | Цитировать Сообщить модератору
 Re: Как сымитировать полный бекап БД?  [new]
o-o
Guest
Vpsem
BACKUP LOG cannot be performed because there is no current database backup.

наверное, дело не в каких-то сделанных операциях,
а в том что вы базу *только сейчас* в полную модель перевели?
мой запрос что возвращает, NULL?
22 июн 16, 11:05    [19321909]     Ответить | Цитировать Сообщить модератору
 Re: Как сымитировать полный бекап БД?  [new]
o-o
Guest
каждый бэкап лога отсчитываeтся от определенного LSN.
о нем знает сама база, a вы его можете посмотреть в sys.database_recovery_status.last_log_backup_lsn
(если база в онлайне, разумеется)
это LSN, следующий за тем, на котором остановился предыдущий бэкап лога.
и его же заполняет полный бэкап, сделанный после перевода базы в полную модель:
это будет первый LSN, начиная с которого сервер будет "удерживать" лог от перезаписи,
до очередного бэкапа лога.
значит, если вы только сейчас перевели в FULL,
этого LSN у вас нет.
получить его можно, выполнив полный бэкап.
-----------------------
до тех пор, пока вы этот бэкап не сделаете,
база по-прежнему будет находиться в простой модели,
лог будет "перезаписываться",
а этот нужный первый LSN вы даже руками не впишете в нужное место в базе,
т.к. сервер волен перезаписать это место в логе,
т.е. ничто не гарантирует вам, что первый LSN, который вы сейчас видите в логе,
не будет утерян через минуту после того, как вы на него посмотрели
22 июн 16, 11:29    [19322031]     Ответить | Цитировать Сообщить модератору
 Re: Как сымитировать полный бекап БД?  [new]
Vpsem
Member

Откуда: Киев
Сообщений: 54
Да, вы правы, режим восстановления переключался, сейчас запрос возвращает null.
О том что до первого бекапа база будет в simple (на смотря на установленный full) не знал, спасибо за разъяснение.
Запустил backup database mydb to disk = 'nul'
22 июн 16, 12:07    [19322321]     Ответить | Цитировать Сообщить модератору
 Re: Как сымитировать полный бекап БД?  [new]
o-o
Guest
Vpsem
О том что до первого бекапа база будет в simple (на смотря на установленный full) не знал

вот тут все хорошо расписано:
New script: is that database REALLY in the FULL recovery mode?

в БОЛ есть вот в таком виде, например:
автор
After switching from the simple recovery model
Immediately after switching to the full recovery model or bulk-logged recovery model, take a full or differential database backup to start the log chain.
Note
The switch to the full or bulk-logged recovery model takes effect only after the first data backup.

View or Change the Recovery Model of a Database (SQL Server)
22 июн 16, 12:20    [19322374]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить