Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужна помощь! База в restoring как выйти? / 25 сообщений из 51, страница 1 из 3
01.11.2016, 19:41
    #39339325
zhan9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
Добрый день комрады!
опишу проблему.
Был в отпуске очень долгое время.
Сам не профи по sql.
Есть базы 1с, каждую ночь делается проверка, бэкап, каждые 30 мин бэкап логов.
пришел с отпуска и меня ждет
1.бэкап больше месяца не делается. и все бэкапы куда то делись есть только за июнь месяц.
2. один из жестких дисков вышел из строя (рейд).

что было сделано
1. Заменил жестки диск.
2. бэкап выдает ошибку

System.Data.SqlClient.SqlError: Read on "F:\sql_bases\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\utpr.mdf" failed: 1(Неверная функция.) (Microsoft.SqlServer.Smo)

сделал проверку

ALTER DATABASE utpr
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
GO

DBCC CHECKDB (N'utpr', REPAIR_REBUILD) WITH NO_INFOMSGS
GO


выдало

Nonqualified transactions are being rolled back. Estimated rollback completion: 100%.
Msg 8966, Level 16, State 2, Line 2
Unable to read and latch page (1:10021752) with latch type SH. 1(Неверная функция.) failed.
CHECKDB found 0 allocation errors and 1 consistency errors not associated with any single object.
Msg 2533, Level 16, State 1, Line 2
Table error: page (1:10021752) allocated to object ID 1140251167, index ID 1, partition ID 72057651761774592,
alloc unit ID 72057651788972032 (type In-row data) was not seen. The page may be invalid or may have an incorrect alloc
unit ID in its header.
The repair level on the DBCC statement caused this repair to be bypassed.
Msg 8976, Level 16, State 1, Line 2
Table error: Object ID 1140251167, index ID 1, partition ID 72057651761774592,
alloc unit ID 72057651788972032 (type In-row data). Page (1:10021752) was not seen in the scan although its parent
(1:10021196) and previous (1:10021751) refer to it. Check any previous errors.
Repairing this error requires other errors to be corrected first.
Msg 8978, Level 16, State 1, Line 2
Table error: Object ID 1140251167, index ID 1, partition ID 72057651761774592, alloc unit ID 72057651788972032
(type In-row data). Page (1:10021753) is missing a reference from previous page (1:10021752).
Possible chain linkage problem.
Repairing this error requires other errors to be corrected first.
CHECKDB found 0 allocation errors and 3 consistency errors in table '_AccRgED679' (object ID 1140251167).
CHECKDB found 0 allocation errors and 4 consistency errors in database 'utpr'.
repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB (utpr, repair_rebuild).


и вот здесь совершил кажется ошибку

RESTORE DATABASE utpr
PAGE = '1:10021752'
FROM DISK = 'D:\backup\utpr_backup_2016_06_09.bak'
WITH NORECOVERY


теперь база в RESTORING

Делаю RESTORE DATABASE utpr with recovery
Выдает

Msg 4303, Level 16, State 1, Line 1
The roll forward start point is now at log sequence number (LSN) 441647000002683000001. Additional roll forward past LSN 530810000598237900001 is required to complete the restore sequence.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.


Я так понимаю он просит лог после июньского бэкапа? а его у меня нет.
Теперь как вывести базу из RESTORINGа?
...
Рейтинг: 0 / 0
01.11.2016, 19:51
    #39339333
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
zhan9,

это что выдаст?
Код: sql
1.
restore headeronly from DISK = 'D:\backup\utpr_backup_2016_06_09.bak'


если у вас это последний фуллбекап, то с него и восстанавливайтесь - других вариантов у вас сейчас нет, имхо
...
Рейтинг: 0 / 0
01.11.2016, 20:03
    #39339343
zhan9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
komrad,

В том то и дело что последних фуллбэкапов нет
...
Рейтинг: 0 / 0
01.11.2016, 21:00
    #39339375
ТиФорс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
zhan9,

если бекапы не делались, нужно было сделать трейл-лог бекап перед восстановлением

Код: sql
1.
BACKUP LOG AdventureWorks2012 TO DISK='C:\temp\AdventureWorks2012_tail.trn' WITH INIT, NORECOVERY;
...
Рейтинг: 0 / 0
01.11.2016, 21:21
    #39339388
zhan9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
ТиФорс,
Понятно спасибо
сейчас как выйти из положения?
...
Рейтинг: 0 / 0
01.11.2016, 21:48
    #39339399
ТиФорс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
zhan9,

И что перед восстановление ничего не сохранили? Тогда попробуйте это.

Код: 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.
USE [master]

GO

ALTER DATABASE [AdventureWorks2012]

SET OFFLINE WITH ROLLBACK IMMEDIATE

GO

/*drop the mdf*/

/* try to bring database online. This will fail but is a

necessary step*/

ALTER DATABASE AdventureWorks2012

SET ONLINE

GO

/*try a NORECOVERY tail log backup */

USE master

GO

BACKUP LOG AdventureWorks2012

TO DISK='C:\temp\AdventureWorks2012_tail.trn'

WITH INIT, NORECOVERY;

/*Msg 942, Level 14, State 4, Line 1

Database 'FullRecovery' cannot be opened because it is offline.

Msg 3013, Level 16, State 1, Line 1

BACKUP LOG is terminating abnormally.*/

/*A NO_TRUNCATE tail log backup should work */

USE master

GO

BACKUP LOG AdventureWorks2012

TO DISK='C:\temp\AdventureWorks2012_tail.trn'

WITH INIT, NO_TRUNCATE;

...
Рейтинг: 0 / 0
01.11.2016, 23:07
    #39339432
churupaha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
...
Рейтинг: 0 / 0
01.11.2016, 23:10
    #39339433
churupaha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
...
Рейтинг: 0 / 0
02.11.2016, 01:08
    #39339485
ТиФорс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
churupaha,

Поясните зачем откатывать восстановление? Файл просто можно заменить файлом из бекапа. Он и так уже восстановился.
...
Рейтинг: 0 / 0
02.11.2016, 01:11
    #39339487
ТиФорс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
churupaha,

Другое дело, что не был сделан бекап хвоста лога, который можно было накатить на файл бекапа. И теперь там (в логе) - непонятно что.
...
Рейтинг: 0 / 0
02.11.2016, 09:35
    #39339590
zhan9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
ТиФорс,
Перед восстановлением я сделал бэкап лога.
сделал вот это
USE [master]

GO

ALTER DATABASE [utpr]

SET OFFLINE WITH ROLLBACK IMMEDIATE

GO

/*drop the mdf*/

/* try to bring database online. This will fail but is a

necessary step*/

ALTER DATABASE utpr

SET ONLINE

GO

/*try a NORECOVERY tail log backup */

USE master

GO

BACKUP LOG utpr

TO DISK='d:\backup\utpr_tail.trn'

WITH INIT, NORECOVERY;

/*Msg 942, Level 14, State 4, Line 1

Database 'FullRecovery' cannot be opened because it is offline.

Msg 3013, Level 16, State 1, Line 1

BACKUP LOG is terminating abnormally.*/

/*A NO_TRUNCATE tail log backup should work */

USE master

GO

BACKUP LOG utpr

TO DISK='d:\temp\utpr_tail.trn'

WITH INIT, NO_TRUNCATE;


выдало
Msg 5052, Level 16, State 1, Line 2
ALTER DATABASE is not permitted while a database is in the Restoring state.
Msg 5069, Level 16, State 1, Line 2
ALTER DATABASE statement failed.
Msg 5052, Level 16, State 1, Line 8
ALTER DATABASE is not permitted while a database is in the Restoring state.
Msg 5069, Level 16, State 1, Line 8
ALTER DATABASE statement failed.
Msg 927, Level 14, State 2, Line 2
Database 'utpr' cannot be opened. It is in the middle of a restore.
Msg 3013, Level 16, State 1, Line 2
BACKUP LOG is terminating abnormally.
Msg 927, Level 14, State 4, Line 2
Database 'utpr' cannot be opened. It is in the middle of a restore.
Msg 3013, Level 16, State 1, Line 2
BACKUP LOG is terminating abnormally.
...
Рейтинг: 0 / 0
02.11.2016, 10:19
    #39339623
o-o
o-o
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
ТиФорсchurupaha,

Поясните зачем откатывать восстановление? Файл просто можно заменить файлом из бекапа. Он и так уже восстановился.
Какой это файл или бэкап восстановился, простите?
ТС решил сделать page restore,
для которого необходимо наличие полного бэкапа и непрерывной цепочки бэкапов лога со времен полного.
У него бэкапы лога не делались, и он не попытался сделать бэкап tail of the log.
Теперь он НЕ восстановил полный бэкап, а восстановил одну только страницу.
Сервер ждет продолжение банкета, т. е. накат всех бэкапов лога с июня.
Предложить ему нечего, бэкапов лога нет.
Что еще делать, как не пытаться откатить начатое?
Ну, остается восстановить июньский бэкап в другую базу. Это и есть последний полный бэкап, о котором писал komrad
...
Рейтинг: 0 / 0
02.11.2016, 12:40
    #39339819
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
zhan9
пришел с отпуска и меня ждет
1.бэкап больше месяца не делается. и все бэкапы куда то делись есть только за июнь месяц.



а у вас точно бекапы перестали делаться?


Код: 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.
select top 100
 	bs.server_name,
	bs.database_name,
	bs.recovery_model,
	convert(numeric(10,2),backup_size/1024/1024) [backup, Mb], 
	convert(numeric(10,2),bs.compressed_backup_size/1024/1024) [Compressed (Mb)],
	bs.backup_start_date, 
	bs.backup_finish_date, 
	datediff(ss,bs.backup_start_date,bs.backup_finish_date) [Duration (sec)],
	Case When datediff(ss,bs.backup_start_date,bs.backup_finish_date) >= 86400
			Then Convert(VarChar(5), datediff(ss,bs.backup_start_date,bs.backup_finish_date)/86400) 
				+ ' days ' 
		  Else ''
		 End
		+ Convert(VarChar(8), DateAdd(Second, datediff(ss,bs.backup_start_date,bs.backup_finish_date), 0), 108) as [Duration],
	bs.name, 
	bs.user_name, 
	case bs.type
		when 'D' then 'Database full'
		when 'I' then 'Database Differential'
		when 'L' then 'Log'
		when 'F' then 'File or Filegroup'
		when 'G' then 'File Differential'
		when 'P' then 'Partial'
		when 'Q' then 'Partial Differential'
		else 'Unknown' end [backup type]  -- from BOL
	,bmf.physical_device_name
from msdb..backupset bs
inner join msdb..backupmediafamily bmf on bs.media_set_id=bmf.media_set_id
where 
	bs.database_name='utpr'
order by backup_finish_date desc
...
Рейтинг: 0 / 0
02.11.2016, 18:29
    #39340233
ТиФорс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
zhan9ТиФорс,
Перед восстановлением я сделал бэкап лога.
сделал вот это
USE [master]

GO

ALTER DATABASE [utpr]

SET OFFLINE WITH ROLLBACK IMMEDIATE

GO

/*drop the mdf*/

/* try to bring database online. This will fail but is a

necessary step*/

ALTER DATABASE utpr

SET ONLINE

GO

/*try a NORECOVERY tail log backup */

USE master

GO

BACKUP LOG utpr

TO DISK='d:\backup\utpr_tail.trn'

WITH INIT, NORECOVERY;

/*Msg 942, Level 14, State 4, Line 1

Database 'FullRecovery' cannot be opened because it is offline.

Msg 3013, Level 16, State 1, Line 1

BACKUP LOG is terminating abnormally.*/

/*A NO_TRUNCATE tail log backup should work */

USE master

GO

BACKUP LOG utpr

TO DISK='d:\temp\utpr_tail.trn'

WITH INIT, NO_TRUNCATE;


выдало
Msg 5052, Level 16, State 1, Line 2
ALTER DATABASE is not permitted while a database is in the Restoring state.
Msg 5069, Level 16, State 1, Line 2
ALTER DATABASE statement failed.
Msg 5052, Level 16, State 1, Line 8
ALTER DATABASE is not permitted while a database is in the Restoring state.
Msg 5069, Level 16, State 1, Line 8
ALTER DATABASE statement failed.
Msg 927, Level 14, State 2, Line 2
Database 'utpr' cannot be opened. It is in the middle of a restore.
Msg 3013, Level 16, State 1, Line 2
BACKUP LOG is terminating abnormally.
Msg 927, Level 14, State 4, Line 2
Database 'utpr' cannot be opened. It is in the middle of a restore.
Msg 3013, Level 16, State 1, Line 2
BACKUP LOG is terminating abnormally.
а файл mdb грохнул?
...
Рейтинг: 0 / 0
02.11.2016, 18:56
    #39340255
ТиФорс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
o-oКакой это файл или бэкап восстановился, простите?
ТС решил сделать page restore,
для которого необходимо наличие полного бэкапа и непрерывной цепочки бэкапов лога со времен полного.
У него бэкапы лога не делались, и он не попытался сделать бэкап tail of the log.
Теперь он НЕ восстановил полный бэкап, а восстановил одну только страницу.
Сервер ждет продолжение банкета, т. е. накат всех бэкапов лога с июня.
Предложить ему нечего, бэкапов лога нет.
Что еще делать, как не пытаться откатить начатое?
Ну, остается восстановить июньский бэкап в другую базу. Это и есть последний полный бэкап, о котором писал komradНу и фик с ним с restore.
- переводим базу в оффлайн
- удаляем файл mdb
- пытаемся перевести базу в онлайн для бекапа tail-log
- бекапим tail-log
- делаем полное восстановлени с июньского бекапа + recovery tail-log

там-же все написано.
...
Рейтинг: 0 / 0
02.11.2016, 19:07
    #39340263
o-o
o-o
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
ТиФорсo-oКакой это файл или бэкап восстановился, простите?
ТС решил сделать page restore,
для которого необходимо наличие полного бэкапа и непрерывной цепочки бэкапов лога со времен полного.
У него бэкапы лога не делались, и он не попытался сделать бэкап tail of the log.
Теперь он НЕ восстановил полный бэкап, а восстановил одну только страницу.
Сервер ждет продолжение банкета, т. е. накат всех бэкапов лога с июня.
Предложить ему нечего, бэкапов лога нет.
Что еще делать, как не пытаться откатить начатое?
Ну, остается восстановить июньский бэкап в другую базу. Это и есть последний полный бэкап, о котором писал komradНу и фик с ним с restore.
- переводим базу в оффлайн
- удаляем файл mdb
- пытаемся перевести базу в онлайн для бекапа tail-log
- бекапим tail-log
- делаем полное восстановлени с июньского бекапа + recovery tail-log

там-же все написано.
если BACKUP LOG с no_truncate , то обращения к мдф все равно не будет.
зачем же его(mdf) грохать?
...
Рейтинг: 0 / 0
02.11.2016, 19:18
    #39340272
ТиФорс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
o-o,

если не грохнуть, то база будет в рекавери, как у ТС.
...
Рейтинг: 0 / 0
02.11.2016, 19:32
    #39340276
o-o
o-o
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
ТиФорсo-o,

если не грохнуть, то база будет в рекавери, как у ТС.
А у него никакое не рекавери, мдф он не грохнул.
У него база в оффлайн не перешла, потому что она in the restoring state
...
Рейтинг: 0 / 0
02.11.2016, 19:36
    #39340278
ТиФорс
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
o-o,

должна была перейти (проверял). жалко, что он лог выполения не приложил.
...
Рейтинг: 0 / 0
02.11.2016, 20:09
    #39340295
o-o
o-o
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
ТиФорсo-o,

должна была перейти (проверял). жалко, что он лог выполения не приложил.
А что вы называете логом выполнения?
Он привел ошибки, последовательно выданные вашими командами,
вы их процитировали в своем посте, где спрашиваете,
точно ли был грохнут mdf.
Сейчас, похоже, я тоже проверю, если батарея не села. Отчитаюсь.
...
Рейтинг: 0 / 0
02.11.2016, 22:18
    #39340367
o-o
o-o
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
короче, у меня лог забэкапился и при недоресторенной базе.
т.е. страница из полного восстановлена,
логи не накачены,
база в RestorePending.
бэкапить лог позволяет без всяких ухищрений.
3 раза проверено на трех базах
...
Рейтинг: 0 / 0
02.11.2016, 22:20
    #39340368
o-o
o-o
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
еще позже сделаю на экспрессе, а то у меня база вечно онлайновая
...
Рейтинг: 0 / 0
03.11.2016, 01:07
    #39340417
o-o
o-o
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
итак, на экспрессе катит только оффлайновый рестор,
т.е. он отказывается ресторить страницу,
пока не сделаешь бэкап лога:

Msg 3159, Level 16, State 1, Line 1
The tail of the log for the database "db_full" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log.
Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally.

о чем вообще-то сказано в БОЛ:
BOLyou can perform an offline page restore,
but first you must create a tail log backup (by backing up the transaction log using RESTORE WITH NORECOVERY
---------------------------------------------------------------
ТиФорсo-o,
если не грохнуть, то база будет в рекавери, как у ТС.
а я еще думаю, что за бредовое объяснение дропанью файла данных?
да и инглиш больно приличный.
а все просто.
это товарищ ТиФорс открыл книженцию
SQL Server Transaction Log Management
By Tony Davis and Gail Shaw
и скопировал оттуда Tail log backups when the database is offline.
только не учел, что в книге идет речь о ситуации, когда база и впрямь навернулась,
т.е. полностью в оффлайне.
автор книги имитирует убитую базу дропом мдф.
только не потому, что "если не грохнуть, то база будет в рекавери, как у ТС",
а для того, чтобы продемонстрировать безвозвратный оффлайн.
а у ТС базу в оффлайн не перевести никак,
так что не вышло подогнать под описанный оффлайновый случай
----
но мне нравится заявление "должна была перейти ( проверял )"
что проверял-то, забэкапить лог оффлайновой базы?
еще раз: не надо для этого грохать файл данных,
и без того backup log with no_truncate в файл данных не полезет.
вообще-то проблема у ТС не в оффлайновой базе, а в ресторящейся базе,
вот ЭТО вы проверяли?
пробовали именно страницу восстанавливать?
...
Рейтинг: 0 / 0
03.11.2016, 07:54
    #39340456
zhan9
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
o-oТиФорсchurupaha,

Поясните зачем откатывать восстановление? Файл просто можно заменить файлом из бекапа. Он и так уже восстановился.
Какой это файл или бэкап восстановился, простите?
ТС решил сделать page restore,
для которого необходимо наличие полного бэкапа и непрерывной цепочки бэкапов лога со времен полного.
У него бэкапы лога не делались, и он не попытался сделать бэкап tail of the log.
Теперь он НЕ восстановил полный бэкап, а восстановил одну только страницу.
Сервер ждет продолжение банкета, т. е. накат всех бэкапов лога с июня.
Предложить ему нечего, бэкапов лога нет.
Что еще делать, как не пытаться откатить начатое?
Ну, остается восстановить июньский бэкап в другую базу. Это и есть последний полный бэкап, о котором писал komrad

я так понимаю если восстановить июньский бэкап, то все данные по день когда он встал в ресторинг теряются?
т.е. другого решения нет?
...
Рейтинг: 0 / 0
03.11.2016, 09:17
    #39340495
o-o
o-o
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужна помощь! База в restoring как выйти?
Правильно понимаете, база будет на момент снятия бэкапа в июне.
Но это вы всегда успеете сделать, давайте попробуем разобраться с тем, что сейчас происходит.
Вы выполнили скрипт комрада, проверили, какие бэкапы были сделаны / не сделаны с момента снятия полного в июне?
Если бэкапы лога делались, но исчезли безвозвратно, то без вариантов, только восстановление из полного.
Если же не делались или вы нашли те сделанные после июньского полного, весь хвост лога нам нужен.
Еще раз расскажите, как вы базу в restoring загнали?
Онлайново или оффлайново?
Оффлайново же он не даст страницы ресторить, если вы не сделали бэкап лога с norecovery, так может, вы его сделали?
А если онлайново, что он пишет на попытку сделать сейчас бэкап лога?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужна помощь! База в restoring как выйти? / 25 сообщений из 51, страница 1 из 3
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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