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

Откуда:
Сообщений: 18
Добрый день комрады!
опишу проблему.
Был в отпуске очень долгое время.
Сам не профи по 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а?
1 ноя 16, 19:41    [19847938]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
komrad
Member

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

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

если у вас это последний фуллбекап, то с него и восстанавливайтесь - других вариантов у вас сейчас нет, имхо
1 ноя 16, 19:51    [19847958]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
zhan9
Member

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

В том то и дело что последних фуллбэкапов нет
1 ноя 16, 20:03    [19847991]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
ТиФорс
Member [заблокирован]

Откуда: 7655112
Сообщений: 229
zhan9,

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

BACKUP LOG AdventureWorks2012 TO DISK='C:\temp\AdventureWorks2012_tail.trn' WITH INIT, NORECOVERY;
1 ноя 16, 21:00    [19848178]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
zhan9
Member

Откуда:
Сообщений: 18
ТиФорс,
Понятно спасибо
сейчас как выйти из положения?
1 ноя 16, 21:21    [19848240]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
ТиФорс
Member [заблокирован]

Откуда: 7655112
Сообщений: 229
zhan9,

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

+
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;
1 ноя 16, 21:48    [19848361]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
zhan9,

18115261
18218293
1 ноя 16, 23:07    [19848592]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
churupaha
Member

Откуда: Краснодар
Сообщений: 1015
18114682
1 ноя 16, 23:10    [19848604]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
ТиФорс
Member [заблокирован]

Откуда: 7655112
Сообщений: 229
churupaha,

Поясните зачем откатывать восстановление? Файл просто можно заменить файлом из бекапа. Он и так уже восстановился.
2 ноя 16, 01:08    [19848826]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
ТиФорс
Member [заблокирован]

Откуда: 7655112
Сообщений: 229
churupaha,

Другое дело, что не был сделан бекап хвоста лога, который можно было накатить на файл бекапа. И теперь там (в логе) - непонятно что.
2 ноя 16, 01:11    [19848830]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
zhan9
Member

Откуда:
Сообщений: 18
ТиФорс,
Перед восстановлением я сделал бэкап лога.
сделал вот это
+
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.
2 ноя 16, 09:35    [19849179]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
o-o
Guest
ТиФорс
churupaha,

Поясните зачем откатывать восстановление? Файл просто можно заменить файлом из бекапа. Он и так уже восстановился.

Какой это файл или бэкап восстановился, простите?
ТС решил сделать page restore,
для которого необходимо наличие полного бэкапа и непрерывной цепочки бэкапов лога со времен полного.
У него бэкапы лога не делались, и он не попытался сделать бэкап tail of the log.
Теперь он НЕ восстановил полный бэкап, а восстановил одну только страницу.
Сервер ждет продолжение банкета, т. е. накат всех бэкапов лога с июня.
Предложить ему нечего, бэкапов лога нет.
Что еще делать, как не пытаться откатить начатое?
Ну, остается восстановить июньский бэкап в другую базу. Это и есть последний полный бэкап, о котором писал komrad
2 ноя 16, 10:19    [19849321]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
komrad
Member

Откуда:
Сообщений: 5261
zhan9

пришел с отпуска и меня ждет
1.бэкап больше месяца не делается. и все бэкапы куда то делись есть только за июнь месяц.



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


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
2 ноя 16, 12:40    [19850228]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
ТиФорс
Member [заблокирован]

Откуда: 7655112
Сообщений: 229
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 грохнул?
2 ноя 16, 18:29    [19852330]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
ТиФорс
Member [заблокирован]

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

там-же все написано.
2 ноя 16, 18:56    [19852430]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
o-o
Guest
ТиФорс
o-o
Какой это файл или бэкап восстановился, простите?
ТС решил сделать page restore,
для которого необходимо наличие полного бэкапа и непрерывной цепочки бэкапов лога со времен полного.
У него бэкапы лога не делались, и он не попытался сделать бэкап tail of the log.
Теперь он НЕ восстановил полный бэкап, а восстановил одну только страницу.
Сервер ждет продолжение банкета, т. е. накат всех бэкапов лога с июня.
Предложить ему нечего, бэкапов лога нет.
Что еще делать, как не пытаться откатить начатое?
Ну, остается восстановить июньский бэкап в другую базу. Это и есть последний полный бэкап, о котором писал komrad
Ну и фик с ним с restore.
- переводим базу в оффлайн
- удаляем файл mdb
- пытаемся перевести базу в онлайн для бекапа tail-log
- бекапим tail-log
- делаем полное восстановлени с июньского бекапа + recovery tail-log

там-же все написано.

если BACKUP LOG с no_truncate, то обращения к мдф все равно не будет.
зачем же его(mdf) грохать?
2 ноя 16, 19:07    [19852457]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
ТиФорс
Member [заблокирован]

Откуда: 7655112
Сообщений: 229
o-o,

если не грохнуть, то база будет в рекавери, как у ТС.
2 ноя 16, 19:18    [19852485]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
o-o
Guest
ТиФорс
o-o,

если не грохнуть, то база будет в рекавери, как у ТС.

А у него никакое не рекавери, мдф он не грохнул.
У него база в оффлайн не перешла, потому что она in the restoring state
2 ноя 16, 19:32    [19852505]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
ТиФорс
Member [заблокирован]

Откуда: 7655112
Сообщений: 229
o-o,

должна была перейти (проверял). жалко, что он лог выполения не приложил.
2 ноя 16, 19:36    [19852510]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
o-o
Guest
ТиФорс
o-o,

должна была перейти (проверял). жалко, что он лог выполения не приложил.

А что вы называете логом выполнения?
Он привел ошибки, последовательно выданные вашими командами,
вы их процитировали в своем посте, где спрашиваете,
точно ли был грохнут mdf.
Сейчас, похоже, я тоже проверю, если батарея не села. Отчитаюсь.
2 ноя 16, 20:09    [19852577]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
o-o
Guest
короче, у меня лог забэкапился и при недоресторенной базе.
т.е. страница из полного восстановлена,
логи не накачены,
база в RestorePending.
бэкапить лог позволяет без всяких ухищрений.
3 раза проверено на трех базах
2 ноя 16, 22:18    [19852909]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
o-o
Guest
еще позже сделаю на экспрессе, а то у меня база вечно онлайновая
2 ноя 16, 22:20    [19852912]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
o-o
Guest
итак, на экспрессе катит только оффлайновый рестор,
т.е. он отказывается ресторить страницу,
пока не сделаешь бэкап лога:

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.


о чем вообще-то сказано в БОЛ:
BOL
you 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 в файл данных не полезет.
вообще-то проблема у ТС не в оффлайновой базе, а в ресторящейся базе,
вот ЭТО вы проверяли?
пробовали именно страницу восстанавливать?
3 ноя 16, 01:07    [19853202]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
zhan9
Member

Откуда:
Сообщений: 18
o-o
ТиФорс
churupaha,

Поясните зачем откатывать восстановление? Файл просто можно заменить файлом из бекапа. Он и так уже восстановился.

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


я так понимаю если восстановить июньский бэкап, то все данные по день когда он встал в ресторинг теряются?
т.е. другого решения нет?
3 ноя 16, 07:54    [19853330]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь! База в restoring как выйти?  [new]
o-o
Guest
Правильно понимаете, база будет на момент снятия бэкапа в июне.
Но это вы всегда успеете сделать, давайте попробуем разобраться с тем, что сейчас происходит.
Вы выполнили скрипт комрада, проверили, какие бэкапы были сделаны / не сделаны с момента снятия полного в июне?
Если бэкапы лога делались, но исчезли безвозвратно, то без вариантов, только восстановление из полного.
Если же не делались или вы нашли те сделанные после июньского полного, весь хвост лога нам нужен.
Еще раз расскажите, как вы базу в restoring загнали?
Онлайново или оффлайново?
Оффлайново же он не даст страницы ресторить, если вы не сделали бэкап лога с norecovery, так может, вы его сделали?
А если онлайново, что он пишет на попытку сделать сейчас бэкап лога?
3 ноя 16, 09:17    [19853475]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить