Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
vakum Member Откуда: Минск Сообщений: 150 |
Суть проблемы. Делал удаление строк в таблице простым delete from ... В результате лог файл вырос до неимоверных размеров и занял весь диск. В резльтате выдало кучу ошибок и база перешла в состояние In Recovery. Как её вернуть в обычное состояние? Особенности: 1. Перенести лог в другое место нет возможности 2. Удалить что нибудь на диске тоже нельзя 3. уменьшить лог - use databasename не катит база в In Recovery. 4. Востановить с бекаапа - не интересно ... Что делать ... |
18 июл 06, 13:01 [2893466] Ответить | Цитировать Сообщить модератору |
[-==-] Member Откуда: Сообщений: 194 |
Можно пошаманить: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] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
В резльтате выдало кучу ошибок И что это за "оно", которое выдало ? Что делать ... Для начала опубликовать select @@version и оригинальные тексты ошибок. Потом заглянуть в логи сервера и оп.системы |
18 июл 06, 13:12 [2893583] Ответить | Цитировать Сообщить модератору |
vakum Member Откуда: Минск Сообщений: 150 |
[-==-], перезапускать сервак это жестко ... хотя тоже вариант .. если ли шанс, что она сама восстановиться, или из за того что места не диске нет процес восстановление стопорится. |
18 июл 06, 13:13 [2893600] Ответить | Цитировать Сообщить модератору |
[-==-] Member Откуда: Сообщений: 194 |
Места по-любому должно быть достаточно, по идее, база не должна была упасть. А если стопануть SQL, скопировать/переименовать файлы базы, стартануть SQL, удалить базу из EM, переименовать обратно, приаттачить? |
18 июл 06, 13:18 [2893642] Ответить | Цитировать Сообщить модератору |
vakum Member Откуда: Минск Сообщений: 150 |
оно это 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] Ответить | Цитировать Сообщить модератору |
vakum Member Откуда: Минск Сообщений: 150 |
[-==-], смотри пункт 1. в особенностях ... тестовый сервак, места мало, базу не жалко сервера тоже ... просто интересная ситуация |
18 июл 06, 13:40 [2893833] Ответить | Цитировать Сообщить модератору |
Ray D Member Откуда: from the middle of nowhere Сообщений: 3598 Блог |
restore database <db> with recovery ? |
18 июл 06, 14:49 [2894567] Ответить | Цитировать Сообщить модератору |
vakum Member Откуда: Минск Сообщений: 150 |
БАЗА ВЫШЛА ИЗ РЕЖИМА In Recovery САМА, БЕЗ КАКИХ-ЛИБО ДЕЙСТВИЙ С МОЕЙ СТОРОНЫ. всем огромное спасибо за скоротечное участвие .. |
18 июл 06, 15:02 [2894660] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
gepard1980 Member Откуда: Ярославль Сообщений: 244 |
У меня тоже возникла неприятная ситуация: перезагрузил сервак и база ушла в 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] Ответить | Цитировать Сообщить модератору |
РСН 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] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
РСН, sys.dm_exec_requests всё уже есть... |
20 мар 17, 15:04 [20314183] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
SQL2008 Member Откуда: Москва Сообщений: 4401 |
РСН, спасибо за удобный скрипт! Тоже сегодня уронил базу делая удаление в транзакции. Освободил место, база поднялась минут за 20. |
8 фев 20, 16:42 [22076045] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |