Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Откат БД на определенный момент, использую полный transaction log  [new]
art_0
Member

Откуда:
Сообщений: 9
Доброго времени суток, выручайте.

Имеется БД на MS SQL 2005, логирование = FULL

Имеется полный backup на 11.2012
Имеется текущее состояние БД на 15.02.2013

Допустим 14.02.2013 были сделаны какие то непоправимые движения в БД.

Как откатиться на состояние до 14.02.2013, допустим на 13.02.2013. учитывая все выше описанные условия.

Заранее благодарен.
15 фев 13, 21:45    [13934641]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
art_0
Member

Откуда:
Сообщений: 9
что пробовал... да многое.

последнее:
- снял бэкап с рабочей базы

- восстановление БД от 11.2012

- после, попытка восстановления из БД (указываю на последний бэкап), на указанную дату, но восстанавливается до последнего состояния!

...
что делаю не верно.
15 фев 13, 22:08    [13934708]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Для восстановления на определенную точку времени необходимо ресторить бэкап лога. После полного бэкапа, разумеется.
15 фев 13, 22:16    [13934741]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
art_0
Member

Откуда:
Сообщений: 9
Гавриленко Сергей Алексеевич,

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

можно Ваш совет по подробнее расписать?
15 фев 13, 22:44    [13934857]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
art_0
ок, по своему описанию, и курению различных форумов, я понимаю ситуация не самая плохая.

можно Ваш совет по подробнее расписать?
Если с базой ничего не делали, то можно сделать бакап лога, потом восстановить полный бакап с опцией no recovery, потом восстановить из бакапа лога до нужного момента времени.
15 фев 13, 23:10    [13934931]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
Если у вас есть полный бэкап(из первого сообщения и после него вы ничего не восстанавливали), то делаете бэкап лога и восстанавливаетесь на нужное время по типу:
restore database [databasename] from disk='путь к файлу полного бэкапа' with norecovery, replace
go
restore log [databasename] from disk='путь к файлу бэкапа лога' with norecovery,stopat='нужно время'
go

Хотя, если после первого сообщения вы восстановили базу из бэкапа на 11.2012(а это следует из второго сообщения), то всё, что после вы потеряли
15 фев 13, 23:17    [13934957]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
Точнее
serpentariy
restore log [databasename] from disk='путь к файлу бэкапа лога' with recovery,stopat='нужно время'

15 фев 13, 23:21    [13934971]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Покурите RESTORE (Transact-SQL) и особенно внимательно Применение резервных копий журналов транзакций (SQL Server), и только потом Восстановление базы данных SQL Server до определенного момента времени (модель полного восстановления)
15 фев 13, 23:23    [13934979]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
art_0
Member

Откуда:
Сообщений: 9
serpentariy,

так. все вышеописаное я попробую.

я восстановил базу на 11.2012 В ДРУГУЮ БАЗУ, т.е я указал восстановление базы в другое место.

по идее ваше должно помочь, но если еще будут более конкретные указания, приму с радостью.
15 фев 13, 23:51    [13935059]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
Если после 13934641 вы сделали 13934708, то вы не сможете восстановиться на нужную вам дату.
15 фев 13, 23:51    [13935060]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
Если после последнего полного бэкапа до нужных вам изменений вы не сделали бэкап лога, а судя по вашим словам вы его не сделали, то восстановиться на нужную вам дату вы не сможете, т.к. после искомых вами изменений вы ещё раз сделали полный бэкап.
15 фев 13, 23:56    [13935071]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
art_0
Member

Откуда:
Сообщений: 9
т.е после полного бэкапа, лог очищается?
16 фев 13, 00:07    [13935105]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
serpentariy
Если после последнего полного бэкапа и после нужных вам изменений вы не сделали бэкап лога, а судя по вашим словам вы его не сделали, то восстановиться на нужную вам дату вы не сможете, т.к. после искомых вами изменений вы ещё раз сделали полный бэкап.
16 фев 13, 00:12    [13935120]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
После полного бэкапа, при полной модели восстановления, из лога удаляются зафиксированные транзакции
16 фев 13, 00:19    [13935143]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
art_0
Member

Откуда:
Сообщений: 9
Спасибо мужики! как говорится, будем умнее!

буду грустить.
16 фев 13, 00:31    [13935184]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
Не грусти. У тебя есть полный бэкап на 11.2012 и сегодняшний, точнее вчерашний, полный бэкап. Восстановив эти бэкапы в разные, ТЕСТОВЫЕ базы, ты сможешь увидеть разницу между ними и, ВОЗМОЖНО, понять, что изменилось после 11.2012.
16 фев 13, 00:45    [13935238]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
art_0,

Не надо грустить.
serpentariy ввел вас в заблуждение -- полный бекап не усекает журнал транзакций.
Так что:
1. Останавливаете сервер и копируете на всякий случай файлы БД
2. Восстанавливаете бекап от 11-го числа в новую БД с опцией norecovery
3. Делаете бекап журнала основной БД и накатываете его с опциями stopat и recovery на БД из п.2
16 фев 13, 00:47    [13935246]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
Т.е. вы хотите сказать, что он сможет восстановить последовательность действий в базе после полного бэкапа от 11.2012 после того, как сделал бэкап базы вчера?
16 фев 13, 01:06    [13935291]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
serpentariy
Т.е. вы хотите сказать, что он сможет восстановить последовательность действий в базе после полного бэкапа от 11.2012 после того, как сделал бэкап базы вчера?
Конечно. Если модель восстановления не simple, то журнал усекается только бекапом журнала. Так что если после бекапа от 11-го не было бекапов журнала или переключений в simple и обратно, то вполне возможно восстановиться.
16 фев 13, 01:16    [13935311]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
Хмм..интересная информация...не думал, что так...попробую проверить. Спасибо.
16 фев 13, 01:25    [13935326]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
invm
Member

Откуда: Москва
Сообщений: 9413
serpentariy,

+ Готовый пример из запасов
use master;
go

declare @t table (tmppath varchar(255));

insert into @t
 exec xp_cmdshell 'echo %temp%';

declare @tmppath varchar(255), @db varchar(255), @trl varchar(255);

select
 @tmppath = tmppath + '\'
from
 @t
where
 tmppath is not null;

if exists(select * from sys.databases where name = 'DBTest')
 exec('drop database DBTest');
  
exec('create database DBTest; alter database DBTest set recovery full');
exec('use DBTest; create table dbo.TestTable (i int)');

select
 @db = @tmppath + 'DBTest_FullBackup_01.bak';
backup database DBTest to disk = @db;

begin tran;
insert into DBTest.dbo.TestTable values (1);
commit;

select
 @trl = @tmppath + 'DBTest_LogBackup_01.trl';
backup Log DBTest to disk = @trl;

begin tran;
insert into DBTest.dbo.TestTable values (2), (3);
commit;

select
 @db = @tmppath + 'DBTest_FullBackup_02.bak';
backup database DBTest to disk = @db;

select
 @trl = @tmppath + 'DBTest_LogBackup_02.trl';
backup Log DBTest to disk = @trl;

select
 @db = @tmppath + 'DBTest_FullBackup_01.bak';
restore database DBTest from disk = @db with replace, norecovery;

select
 @trl = @tmppath + 'DBTest_LogBackup_01.trl';
restore log DBTest from disk = @trl with norecovery;

select
 @trl = @tmppath + 'DBTest_LogBackup_02.trl';
restore log DBTest from disk = @trl with recovery;

select * from DBTest.dbo.TestTable;

drop database DBTest;
16 фев 13, 01:30    [13935332]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
Cygapb-007
Member

Откуда:
Сообщений: 1677
Лучше все же убедиться, что модель не SIMPLE, а FULL :) Команда sp_helpdb 'DataBaseName', в поле статус смотрим значение RECOVERY=

Журнал транзакций не сработает в SIMPLE
16 фев 13, 01:31    [13935334]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
Cygapb-007
Лучше все же убедиться, что модель не SIMPLE, а FULL :) Команда sp_helpdb 'DataBaseName', в поле статус смотрим значение RECOVERY=

Журнал транзакций не сработает в SIMPLE

В первом сообщении указано, что FULL
16 фев 13, 01:34    [13935340]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
invm,

А что делать, если вместо добавления новой строки обновление существующей?
16 фев 13, 02:12    [13935396]     Ответить | Цитировать Сообщить модератору
 Re: Откат БД на определенный момент, использую полный transaction log  [new]
serpentariy
Member

Откуда:
Сообщений: 265
serpentariy
invm,

А что делать, если вместо добавления новой строки обновление существующей?

К тому же бэкапа лога между полными бэкапами нет
И после восстановления нужно получит обновлённое значение?
Ваш пример я не смог приспособить
16 фев 13, 02:27    [13935419]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить