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

Откуда: Минск
Сообщений: 151
Суть проблемы.

Делал удаление строк в таблице простым delete from ... В результате лог файл вырос до неимоверных размеров и занял весь диск. В резльтате выдало кучу ошибок и база перешла в состояние In Recovery. Как её вернуть в обычное состояние?

Особенности:
1. Перенести лог в другое место нет возможности
2. Удалить что нибудь на диске тоже нельзя
3. уменьшить лог - use databasename не катит база в In Recovery.
4. Востановить с бекаапа - не интересно ...

Что делать ...
18 июл 06, 13:01    [2893466]     Ответить | Цитировать Сообщить модератору
 Re: Помогите вывести базу из состояния In Recovery.  [new]
[-==-]
Member

Откуда:
Сообщений: 190
Можно пошаманить:

Use master 
go 
sp_configure 'allow updates', 1 
reconfigure with override 
go 

Там же выполняем :
update sysdatabases set status= 32768 where name = '<db_name>' 

Перезапускаем SQL Server. Далее по обстоятельствам.

USE '<db_name>' 
GO 
sp_dboption '<db_name>', 'single_user', 'true' 
go 
DBCC CHECKDB 
go 

Если все в порядке, то:
sp_dboption '<db_name>', 'single_user', 'false' 
go 
Use master 
go 
sp_configure 'allow updates', 0 
go
18 июл 06, 13:09    [2893556]     Ответить | Цитировать Сообщить модератору
 Re: Помогите вывести базу из состояния In Recovery.  [new]
Glory
Member

Откуда:
Сообщений: 104764
В резльтате выдало кучу ошибок
И что это за "оно", которое выдало ?

Что делать ...
Для начала опубликовать select @@version и оригинальные тексты ошибок.
Потом заглянуть в логи сервера и оп.системы
18 июл 06, 13:12    [2893583]     Ответить | Цитировать Сообщить модератору
 Re: Помогите вывести базу из состояния In Recovery.  [new]
vakum
Member

Откуда: Минск
Сообщений: 151
[-==-], перезапускать сервак это жестко ... хотя тоже вариант ..
если ли шанс, что она сама восстановиться, или из за того что места не диске нет процес восстановление стопорится.
18 июл 06, 13:13    [2893600]     Ответить | Цитировать Сообщить модератору
 Re: Помогите вывести базу из состояния In Recovery.  [new]
[-==-]
Member

Откуда:
Сообщений: 190
Места по-любому должно быть достаточно, по идее, база не должна была упасть. А если стопануть SQL, скопировать/переименовать файлы базы, стартануть SQL, удалить базу из EM, переименовать обратно, приаттачить?
18 июл 06, 13:18    [2893642]     Ответить | Цитировать Сообщить модератору
 Re: Помогите вывести базу из состояния In Recovery.  [new]
vakum
Member

Откуда: Минск
Сообщений: 151
оно это SQL SMS.
Ошибки привести полностью не смогу не смогу, но их смысл в том , что

The transaction log for database 'dbname' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases

Т.е. в результате выполнения транзакции тупо закончилось место на диске и быза перешла в состояние in recovery.

Microsoft SQL Server 2005 - 9.00.2153.00 (Intel X86)
18 июл 06, 13:38    [2893812]     Ответить | Цитировать Сообщить модератору
 Re: Помогите вывести базу из состояния In Recovery.  [new]
vakum
Member

Откуда: Минск
Сообщений: 151
[-==-], смотри пункт 1. в особенностях ...

тестовый сервак, места мало, базу не жалко сервера тоже ... просто интересная ситуация
18 июл 06, 13:40    [2893833]     Ответить | Цитировать Сообщить модератору
 Re: Помогите вывести базу из состояния In Recovery.  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3597
Блог
restore database <db> with recovery ?
18 июл 06, 14:49    [2894567]     Ответить | Цитировать Сообщить модератору
 Re: Помогите вывести базу из состояния In Recovery.  [new]
vakum
Member

Откуда: Минск
Сообщений: 151
БАЗА ВЫШЛА ИЗ РЕЖИМА In Recovery САМА, БЕЗ КАКИХ-ЛИБО ДЕЙСТВИЙ С МОЕЙ СТОРОНЫ.

всем огромное спасибо за скоротечное участвие ..
18 июл 06, 15:02    [2894660]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Помогите вывести базу из состояния In Recovery.  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 231
У меня тоже возникла неприятная ситуация: перезагрузил сервак и база ушла в InRecovery. Очень помог скрипт, показывающий сколько процентов recovery. Автор скрипта Тим Лакуа.

DECLARE @DBName VARCHAR(64) = 'databasename'

DECLARE @ErrorLog AS TABLE([LogDate] CHAR(24), [ProcessInfo] VARCHAR(64), [Text] VARCHAR(MAX))

INSERT INTO @ErrorLog
exec sys.xp_readerrorlog 0, 1, 'Recovery of database', @DBName

SELECT TOP 5
[LogDate]
,SUBSTRING([Text], CHARINDEX(') is ', [Text]) + 4,CHARINDEX(' complete (', [Text]) - CHARINDEX(') is ', [Text]) - 4) AS PercentComplete
,CAST(SUBSTRING([Text], CHARINDEX('approximately', [Text]) + 13,CHARINDEX(' seconds remain', [Text]) - CHARINDEX('approximately', [Text]) - 13) AS FLOAT)/60.0 AS MinutesRemaining
,CAST(SUBSTRING([Text], CHARINDEX('approximately', [Text]) + 13,CHARINDEX(' seconds remain', [Text]) - CHARINDEX('approximately', [Text]) - 13) AS FLOAT)/60.0/60.0 AS HoursRemaining
,[Text]

FROM @ErrorLog ORDER BY [LogDate] DESC
30 ноя 16, 17:12    [19952505]     Ответить | Цитировать Сообщить модератору
 Re: Помогите вывести базу из состояния In Recovery.  [new]
РСН
Member

Откуда:
Сообщений: 7
gepard1980 спасибо за скрипт. Скрипт позволяет посмотреть процесс восстановления базы в % и ориентировочное время.
На SQL 2016 правда не заработал, но небольшая модификация его оживила, может кому пригодится
DECLARE @DBName VARCHAR(64) = 'databasename'

DECLARE @ErrorLog AS TABLE([LogDate] CHAR(24), [ProcessInfo] VARCHAR(64), [Text] VARCHAR(MAX))

INSERT INTO @ErrorLog
exec sys.xp_readerrorlog

SELECT TOP 5
	[LogDate]
	,SUBSTRING([Text], CHARINDEX(') is ', [Text]) + 4,CHARINDEX(' complete (', [Text]) - CHARINDEX(') is ', [Text]) - 4) AS PercentComplete
	,CAST(SUBSTRING([Text], CHARINDEX('approximately', [Text]) + 13,CHARINDEX(' seconds remain', [Text]) - CHARINDEX('approximately', [Text]) - 13) AS FLOAT)/60.0 AS MinutesRemaining
	,CAST(SUBSTRING([Text], CHARINDEX('approximately', [Text]) + 13,CHARINDEX(' seconds remain', [Text]) - CHARINDEX('approximately', [Text]) - 13) AS FLOAT)/3600.0 AS HoursRemaining
	,[Text]

FROM @ErrorLog 
where CHARINDEX(@DBName, [Text]) > 0 and CHARINDEX('approximately', [Text]) > 0
ORDER BY [LogDate] DESC 
20 мар 17, 14:38    [20314077]     Ответить | Цитировать Сообщить модератору
 Re: Помогите вывести базу из состояния In Recovery.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6789
РСН,

sys.dm_exec_requests всё уже есть...
20 мар 17, 15:04    [20314183]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Помогите вывести базу из состояния In Recovery.  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4082
РСН,
спасибо за удобный скрипт!
Тоже сегодня уронил базу делая удаление в транзакции.
Освободил место, база поднялась минут за 20.
8 фев 20, 16:42    [22076045]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить