powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Восстановление базы данных из ldf-файла
15 сообщений из 40, страница 2 из 2
Восстановление базы данных из ldf-файла
    #39939214
sirsyslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич,
в этом и проблема- сервер не поднимается, видимо потому что master.mdf тоже зашифрован. служба запускается и отключается сразу
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939272
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бэкапа базы master тоже нет?
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939288
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sirsyslik
в этом и проблема- сервер не поднимается
Восстанавливайте на другом
Пример как подменить файл ЖТ, сделать log tail бекап и восстановить БД
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
use master;
set ansi_nulls, quoted_identifier, xact_abort on;
go

exec xp_cmdshell 'del C:\Windows\TEMP\Test001_full.bak', no_output;
exec xp_cmdshell 'del C:\Windows\TEMP\Test001_log.trn', no_output;
exec xp_cmdshell 'del C:\Windows\TEMP\Test001_log.ldfcopy', no_output;
go

-- Подготавливаем ситуацию "БД нет. Есть только файл ЖТ и полный бекап. Модель восстановления полная"
create database Test001
on primary (name = 'Test001_data', filename = 'C:\Windows\TEMP\Test001_data.mdf')
log on (name = 'Test001_log', filename = 'C:\Windows\TEMP\Test001_log.ldf');
go

alter database Test001 set recovery full;
backup database Test001 to disk = 'C:\Windows\TEMP\Test001_full.bak' with init;
go

use Test001;
go

create table dbo.t (id int);
insert into dbo.t values (1), (2), (3);
select * from dbo.t;
go

use master;
alter database Test001 set offline;
drop database Test001;
go

exec xp_cmdshell 'del C:\Windows\TEMP\Test001_data.mdf';
exec xp_cmdshell 'ren C:\Windows\TEMP\Test001_log.ldf Test001_log.ldfcopy';
-- Итого имеем полный бекап Test001_full.bak и файл журнала Test001_log.ldfcopy
go

-- Создаем одноименную новую БД
create database Test001
on primary (name = 'Test001_data', filename = 'C:\Windows\TEMP\Test001_data.mdf')
log on (name = 'Test001_log', filename = 'C:\Windows\TEMP\Test001_log.ldf');
go

-- Переводим ее в оффлайн и подменяем файл ЖТ на сохраненный исходный
alter database Test001 set offline;
exec xp_cmdshell 'copy /b /y C:\Windows\TEMP\Test001_log.ldfcopy C:\Windows\TEMP\Test001_log.ldf';
go

-- Попытка перевести БД в онлайн, котороя закончится неудачей
alter database Test001 set online;
go

-- Делаем tail-бекап ЖТ, БД будет переведена в состояние restoring
backup log Test001 to disk = 'C:\Windows\TEMP\Test001_Log.trn' with init, norecovery, no_truncate;
go

-- Восстанавливаем БД
restore database Test001 from disk = 'C:\Windows\TEMP\Test001_full.bak' with replace, norecovery;
restore log Test001 from disk = 'C:\Windows\TEMP\Test001_Log.trn' with recovery;
go

-- Проверяем
use Test001;
select * from dbo.t;
go

use master;
alter database Test001 set single_user with rollback immediate;
drop database Test001;
go

...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939316
sirsyslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
sirsyslik
в этом и проблема- сервер не поднимается
Восстанавливайте на другом
Пример как подменить файл ЖТ, сделать log tail бекап и восстановить БД
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
use master;
set ansi_nulls, quoted_identifier, xact_abort on;
go

exec xp_cmdshell 'del C:\Windows\TEMP\Test001_full.bak', no_output;
exec xp_cmdshell 'del C:\Windows\TEMP\Test001_log.trn', no_output;
exec xp_cmdshell 'del C:\Windows\TEMP\Test001_log.ldfcopy', no_output;
go

-- Подготавливаем ситуацию "БД нет. Есть только файл ЖТ и полный бекап. Модель восстановления полная"
create database Test001
on primary (name = 'Test001_data', filename = 'C:\Windows\TEMP\Test001_data.mdf')
log on (name = 'Test001_log', filename = 'C:\Windows\TEMP\Test001_log.ldf');
go

alter database Test001 set recovery full;
backup database Test001 to disk = 'C:\Windows\TEMP\Test001_full.bak' with init;
go

use Test001;
go

create table dbo.t (id int);
insert into dbo.t values (1), (2), (3);
select * from dbo.t;
go

use master;
alter database Test001 set offline;
drop database Test001;
go

exec xp_cmdshell 'del C:\Windows\TEMP\Test001_data.mdf';
exec xp_cmdshell 'ren C:\Windows\TEMP\Test001_log.ldf Test001_log.ldfcopy';
-- Итого имеем полный бекап Test001_full.bak и файл журнала Test001_log.ldfcopy
go

-- Создаем одноименную новую БД
create database Test001
on primary (name = 'Test001_data', filename = 'C:\Windows\TEMP\Test001_data.mdf')
log on (name = 'Test001_log', filename = 'C:\Windows\TEMP\Test001_log.ldf');
go

-- Переводим ее в оффлайн и подменяем файл ЖТ на сохраненный исходный
alter database Test001 set offline;
exec xp_cmdshell 'copy /b /y C:\Windows\TEMP\Test001_log.ldfcopy C:\Windows\TEMP\Test001_log.ldf';
go

-- Попытка перевести БД в онлайн, котороя закончится неудачей
alter database Test001 set online;
go

-- Делаем tail-бекап ЖТ, БД будет переведена в состояние restoring
backup log Test001 to disk = 'C:\Windows\TEMP\Test001_Log.trn' with init, norecovery, no_truncate;
go

-- Восстанавливаем БД
restore database Test001 from disk = 'C:\Windows\TEMP\Test001_full.bak' with replace, norecovery;
restore log Test001 from disk = 'C:\Windows\TEMP\Test001_Log.trn' with recovery;
go

-- Проверяем
use Test001;
select * from dbo.t;
go

use master;
alter database Test001 set single_user with rollback immediate;
drop database Test001;
go




ой спасибо, буду теперь пытаться понять как этим пользоваться)
xp_cmdshell как минимум надо включить где то в настройках скуля, но думаю это простенько гуглится)
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939342
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sirsyslik
xp_cmdshell как минимум надо включить где то в настройках скуля, но думаю это простенько гуглится)
xp_cmdshell тут просто для демонстрации действий прямо в скрипте.
Вы можете эти действия сделать мышкой в проводнике.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939552
sirsyslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
sirsyslik
в этом и проблема- сервер не поднимается
Восстанавливайте на другом
Пример как подменить файл ЖТ, сделать log tail бекап и восстановить БД
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
use master;
set ansi_nulls, quoted_identifier, xact_abort on;
go

exec xp_cmdshell 'del C:\Windows\TEMP\Test001_full.bak', no_output;
exec xp_cmdshell 'del C:\Windows\TEMP\Test001_log.trn', no_output;
exec xp_cmdshell 'del C:\Windows\TEMP\Test001_log.ldfcopy', no_output;
go

-- Подготавливаем ситуацию "БД нет. Есть только файл ЖТ и полный бекап. Модель восстановления полная"
create database Test001
on primary (name = 'Test001_data', filename = 'C:\Windows\TEMP\Test001_data.mdf')
log on (name = 'Test001_log', filename = 'C:\Windows\TEMP\Test001_log.ldf');
go

alter database Test001 set recovery full;
backup database Test001 to disk = 'C:\Windows\TEMP\Test001_full.bak' with init;
go

use Test001;
go

create table dbo.t (id int);
insert into dbo.t values (1), (2), (3);
select * from dbo.t;
go

use master;
alter database Test001 set offline;
drop database Test001;
go

exec xp_cmdshell 'del C:\Windows\TEMP\Test001_data.mdf';
exec xp_cmdshell 'ren C:\Windows\TEMP\Test001_log.ldf Test001_log.ldfcopy';
-- Итого имеем полный бекап Test001_full.bak и файл журнала Test001_log.ldfcopy
go

-- Создаем одноименную новую БД
create database Test001
on primary (name = 'Test001_data', filename = 'C:\Windows\TEMP\Test001_data.mdf')
log on (name = 'Test001_log', filename = 'C:\Windows\TEMP\Test001_log.ldf');
go

-- Переводим ее в оффлайн и подменяем файл ЖТ на сохраненный исходный
alter database Test001 set offline;
exec xp_cmdshell 'copy /b /y C:\Windows\TEMP\Test001_log.ldfcopy C:\Windows\TEMP\Test001_log.ldf';
go

-- Попытка перевести БД в онлайн, котороя закончится неудачей
alter database Test001 set online;
go

-- Делаем tail-бекап ЖТ, БД будет переведена в состояние restoring
backup log Test001 to disk = 'C:\Windows\TEMP\Test001_Log.trn' with init, norecovery, no_truncate;
go

-- Восстанавливаем БД
restore database Test001 from disk = 'C:\Windows\TEMP\Test001_full.bak' with replace, norecovery;
restore log Test001 from disk = 'C:\Windows\TEMP\Test001_Log.trn' with recovery;
go

-- Проверяем
use Test001;
select * from dbo.t;
go

use master;
alter database Test001 set single_user with rollback immediate;
drop database Test001;
go




ВО ПЕРВЫХ СПАСИБО!

одна база из 3х по этому рецепту полностью вылечилась


а вот вторая база на последнем этапе (restore log Test001 from disk = 'C:\Windows\TEMP\Test001_Log.trn' with recovery;) ругается.

Сообщение 4305, уровень 16, состояние 1, строка 2
Журнал в этом резервном наборе данных начинается с номера LSN 2095000002781600001, который еще не может применяться к базе данных. Может быть восстановлена более ранняя резервная копия журналов, включающая номер LSN 2014000004067400001.
Сообщение 3013, уровень 16, состояние 1, строка 2
RESTORE LOG прервано с ошибкой.


подскажите, с чем оно может быть связано, я так понимаю что в сформированном из LDF файла TRN файле отсутствует некоторый кусок?
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939567
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sirsyslik
подскажите, с чем оно может быть связано
C тем, что после полного бекапа делались резервные копии журнала.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939575
sirsyslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm
sirsyslik
подскажите, с чем оно может быть связано
C тем, что после полного бекапа делались резервные копии журнала.

средствами сервера? очень странно, никто такого не настраивал... да и журнал по объему - 17ГБ
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939576
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
sirsyslik
подскажите, с чем оно может быть связано
C тем, что после полного бекапа делались резервные копии журнала.
Добавлю для sirsyslik-ка - нужно найти эти резервные копии, потом восстанавить полный бакап с norecovery, потом по очереди найденные бакапы журналов лога тоже с norecovery, и потом последний бакап лога (сделанный, как в примере вышке), уже с recovery
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939579
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sirsyslik
invm
пропущено...
C тем, что после полного бекапа делались резервные копии журнала.

средствами сервера? очень странно, никто такого не настраивал... да и журнал по объему - 17ГБ
Любыми средствами, может, у вас работала какая то система бакапирования. Может, кто то лог "обрезал".
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939581
sirsyslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexeyvg
sirsyslik
пропущено...

средствами сервера? очень странно, никто такого не настраивал... да и журнал по объему - 17ГБ
Любыми средствами, может, у вас работала какая то система бакапирования. Может, кто то лог "обрезал".


обрезки исключены, никто этим не занимался. системы бекапирования на были. единственное грешу на саму 1с:БП3.0. не могла ли она как то сама инициализировать бекап?
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939588
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sirsyslik,

Чудес не бывает.
Если жива msdb исходного сервера или есть ее бекап, то восстановитепо другим именем и посмотрите что там в истории резервного копирования - https://datajoe.blog/2019/06/05/view-sql-server-backup-history/
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939617
sirsyslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

от старой msdb только лог, даже полного бекапа нет
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939629
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Усекание лога могло произойти в том числе и при переводе базы в простую модель восстановления, а потом обратно. Этого в msdb не будет.
...
Рейтинг: 0 / 0
Восстановление базы данных из ldf-файла
    #39939635
sirsyslik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевич
Усекание лога могло произойти в том числе и при переводе базы в простую модель восстановления, а потом обратно. Этого в msdb не будет.


вот такого совсем точно не было
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Восстановление базы данных из ldf-файла
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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