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

Откуда:
Сообщений: 17
Здравствуйте.
Версия сервера Microsoft SQL Server 2012 (SP1) - 11.0.3000.0 (X64)
Oct 19 2012 13:38:57
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)
После перезагрузки сервера база ушла в режим (Ожидание восстановления). Пробовал использовать часто встречающийся в поиске скрипт:
ALTER DATABASE scout_storage SET EMERGENCY;
GO

ALTER DATABASE scout_storage SET SINGLE_USER;
GO

DBCC CHECKDB (scout_storage)
GO

ALTER DATABASE scout_storage SET MULTI_USER;
GO

ALTER DATABASE scout_storage SET ONLINE;
В сообщении появляются ошибки:

Сообщение 5120, уровень 16, состояние 101, строка 1
Не удалось открыть физический файл "C:\Program Files\Microsoft SQL Server\MSSQL11.KGKRSQL\MSSQL\DATA\scout_storage.mdf". Ошибка операционной системы 32: "32(Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.)".
Сообщение 5120, уровень 16, состояние 101, строка 2
Не удалось открыть физический файл "C:\Program Files\Microsoft SQL Server\MSSQL11.KGKRSQL\MSSQL\DATA\scout_storage.mdf". Ошибка операционной системы 32: "32(Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.)".
Сообщение 945, уровень 14, состояние 2, строка 2
Не удалось открыть базу данных "scout_storage" вследствие недоступности файлов, нехватки памяти или места на диске. Подробности см. в журнале ошибок SQL Server.
Сообщение 5120, уровень 16, состояние 101, строка 2
Не удалось открыть физический файл "C:\Program Files\Microsoft SQL Server\MSSQL11.KGKRSQL\MSSQL\DATA\scout_storage.mdf". Ошибка операционной системы 32: "32(Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.)".
Сообщение 5120, уровень 16, состояние 101, строка 2
Не удалось открыть физический файл "C:\Program Files\Microsoft SQL Server\MSSQL11.KGKRSQL\MSSQL\DATA\scout_storage.mdf". Ошибка операционной системы 32: "32(Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.)".
Сообщение 5120, уровень 16, состояние 101, строка 2
Не удалось открыть физический файл "C:\Program Files\Microsoft SQL Server\MSSQL11.KGKRSQL\MSSQL\DATA\scout_storage_log.ldf". Ошибка операционной системы 32: "32(Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.)".
Сообщение 5181, уровень 16, состояние 5, строка 2
Невозможно повторно перезапустить базу данных "scout_storage". Возвращение к предыдущему состоянию.
Сообщение 5069, уровень 16, состояние 1, строка 2
Не удалось выполнить инструкцию ALTER DATABASE.

Попробовал метод из статьи http://blog.vb76.com/vosstanovlenie-bazy-ms-sql-posle-udaleniya-fajla-logov-_log-ldf/

Но к сожалению это тоже не дало положительного эффекта. Не могу разобраться как вычислить процесс который мешает выполнить восстановление базы.
Судя по всему проблема возникла из-за выросшего файла логов (вот https://habrahabr.ru/sandbox/40161/ что то похожее описывают) - scout_storage_log.ldf вырос до 4,01 Гб.
Метод из песочницы хабра так же не работает. Ошибка доступа к файлу scout_storage.mdf.
27 фев 18, 22:11    [21223491]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Col
Member

Откуда: Торонто
Сообщений: 180
neorus,
process explorer --> ctrl+f
27 фев 18, 22:24    [21223515]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

Откуда:
Сообщений: 17
К сожалению этот вариант я пробовал. Кроме самой БД в данный момент с файлом никто не общается.
Картинка с другого сайта.

К сообщению приложен файл. Размер - 27Kb
28 фев 18, 10:15    [21224036]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
что написано в еррорлоге?
переводится ли база в оффлайн?
28 фев 18, 10:28    [21224066]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

Откуда:
Сообщений: 17
В оффлайн режим базу перевел. Правда теперь обратно не возращается - выдает ошибку
Картинка с другого сайта.

Приложил лог файл

К сообщению приложен файл (ERRORLOG - 23Kb) cкачать
28 фев 18, 11:31    [21224257]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
neorus
В оффлайн режим базу перевел. Правда теперь обратно не возращается - выдает ошибку
Картинка с другого сайта.

Приложил лог файл

Покажите
select * from master.sys.master_files as mf 
28 фев 18, 11:41    [21224292]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
пока база в оффлайне, попробуйте файлы скопировать в другое место.
потом создайте другую базу через create database for attach
теперь можно старую дропнуть, а новую переименовать в старую
28 фев 18, 11:47    [21224315]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
в еррорлоге фигурирует еще некая база scout_storage_bad.
уж не на тех же ли она файлах основана?
а то поди она-то и держит эти файлы
28 фев 18, 11:52    [21224345]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

Откуда:
Сообщений: 17
Вы имеете в виду выполнить такой запрос:

USE master;
GO
CREATE DATABASE scout_storage+
ON PRIMARY (NAME = scout_storage+,
(NAME = 'C:\Program Files\Microsoft SQL Server\MSSQL11.KGKRSQL\MSSQL\DATAscout_storage.mdf);
GO

?
28 фев 18, 12:09    [21224409]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

Откуда:
Сообщений: 17
Yasha123
в еррорлоге фигурирует еще некая база scout_storage_bad.
уж не на тех же ли она файлах основана?
а то поди она-то и держит эти файлы


база scout_storage_bad моя попытка решить проблему в прошлый раз. Так же сыпались ошибки про занятость в итоге переименовал эту базу. создал новую с таким же именем и развернул бекап свежий. Беда в том что в тот раз я сменил пароль sa, а вот сделать это в скрипте бекапа забыл. Соответственно 2 недели я жил без бекапов, поэтому и пытаюсь воскресить текущую базу scout_storage.
28 фев 18, 14:21    [21224955]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
neorus, еще раз, приведите результаты скрипта

select * from master.sys.master_files as mf 


Может вы ту базу с теми же именами файлов восстановили, и сейчас пытаетесь второй раз те же файлы использовать.
28 фев 18, 15:15    [21225198]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

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

Картинка с другого сайта.
Картинка с другого сайта.
Картинка с другого сайта.



После очередной перезагрузки и возвращении файлов на место - база перешла в статус подозрительная
28 фев 18, 15:24    [21225253]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

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

Возможно вы правы, переименование базы в scout_storage_bad проводил через оснастку Ms SQL server management studio. Файлы базы переименовались в scout_storage_bad.mdf и scout_storage_bad_log.ldf
Во всяком случае эти файлы есть в каталоге DATA.
Кстати метод восстановления который до этого ни в какую не работал на scout_storage_bad сейчас отработал нормально и база в нормальном статусе, увы там нет данных за 2 недели и хотелось бы починить текущую.
28 фев 18, 15:30    [21225280]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
neorus, хм, как раз нужных данных вы и не показали - на скриншоте полный путь обрезан.
Скопируйте, вставьте просто таблицей сюда.
28 фев 18, 15:32    [21225295]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

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

Не пойму как выдернуть в виде файла результат и сюда приложить
Картинка с другого сайта.

Написал вам в почту указанную в профиле.
28 фев 18, 16:01    [21225395]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
ну так еще раз вопрос читаем:
Yasha123
в еррорлоге фигурирует еще некая база scout_storage_bad.
уж не на тех же ли она файлах основана?
а то поди она-то и держит эти файлы

ваша база scout_storage_bad физически и есть те самые mdf, ldf от исходной базы.
вы 2 базы умудрились присобачить к одним и тем же физическим файлам.
разумеется, как только база scout_storage_bad поднимается,
сам сервер и захапывает доступ к этим файлам
28 фев 18, 16:42    [21225565]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

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

а откуда появилась связь?
Я же переименовал базу. изменилось имя файла базы и файла логов.
Потом создал новую и развернул в нее бекап из bak файла (тип полная резервная копия). Откуда связь взялась?
28 фев 18, 17:20    [21225724]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
neorus
Yasha123,

а откуда появилась связь?
Я же переименовал базу. изменилось имя файла базы и файла логов.
Потом создал новую и развернул в нее бекап из bak файла (тип полная резервная копия). Откуда связь взялась?

наверное, когда бэкап разворачивали,
не указали WITH MOVE.
в результате развернулось по умолчанию,
т.е. по тому пути, где и было.
получилось, что уже и новая база смотрит на старые файлы.

только такое могло произойти лишь в том случае,
когда старая база в оффлайне была.
иначе бы не получилось безнаказанно перезаписать ее файлы
28 фев 18, 17:27    [21225759]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

Откуда:
Сообщений: 17
Yasha123,
Разобрался вроде бы в чем беда. Но даже если 2 базы смотрят на одни файлы. Но запись приложение вело только в базу scout_storage. Вторая база просто лежала в режиме ожидание восстановления. Могло это повлиять на свеже созданную?
28 фев 18, 17:36    [21225812]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Yasha123
neorus
Yasha123,

а откуда появилась связь?
Я же переименовал базу. изменилось имя файла базы и файла логов.
Потом создал новую и развернул в нее бекап из bak файла (тип полная резервная копия). Откуда связь взялась?

наверное, когда бэкап разворачивали,
не указали WITH MOVE.

Я честно попробовал. Нифига. Нужны какие то особые танцы с бубнами.
Вот что получается, если попытаться в файлы offline-базы восстановиться:

Msg 1834, Level 16, State 1, Line 2
The file 'D:\database\Data\test_offline.mdf' cannot be overwritten. It is being used by database 'test_offline'.
Msg 3156, Level 16, State 4, Line 2
File 'test_offline' cannot be restored to 'D:\database\Data\test_offline.mdf'. Use WITH MOVE to identify a valid location for the file.
Msg 1834, Level 16, State 1, Line 2
The file 'D:\database\Data\test_offline_log.ldf' cannot be overwritten. It is being used by database 'test_offline'.
Msg 3156, Level 16, State 4, Line 2
File 'test_offline_log' cannot be restored to 'D:\database\Data\test_offline_log.ldf'. Use WITH MOVE to identify a valid location for the file.
Msg 3119, Level 16, State 1, Line 2
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.

Ситуацию это, собственно, не меняет, мне просто любопытно, что конкретно нужно сделать, чтобы получить две базы, смотрящие на одни файлы.
28 фев 18, 17:41    [21225831]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
neorus
Yasha123,
Разобрался вроде бы в чем беда. Но даже если 2 базы смотрят на одни файлы. Но запись приложение вело только в базу scout_storage. Вторая база просто лежала в режиме ожидание восстановления. Могло это повлиять на свеже созданную?

вы меня запутали.
какая база лежала, а какая работала?

допустим, лежала база scout_storage_bad,
а в базу scout_storage все писалось.

тогда проблема у вас началась, когда кто-то сервер перезагрузил,
и вместо scout_storage в онлайн первой вышла scout_storage_bad.

тогда сейчас отправьте в оффлайн scout_storage_bad,
после этого scout_storage выйдет в онлайн.
28 фев 18, 17:42    [21225835]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

Откуда:
Сообщений: 17
Вывел базу scout_storage_bad в offline
Теперь статус scout_storage стал подозрительный.
Каким скриптом ее теперь починить лучше?
28 фев 18, 17:44    [21225849]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
Minamoto
Yasha123
пропущено...

наверное, когда бэкап разворачивали,
не указали WITH MOVE.

Я честно попробовал. Нифига. Нужны какие то особые танцы с бубнами.
Вот что получается, если попытаться в файлы offline-базы восстановиться:

Msg 1834, Level 16, State 1, Line 2
The file 'D:\database\Data\test_offline.mdf' cannot be overwritten. It is being used by database 'test_offline'.
Msg 3156, Level 16, State 4, Line 2
File 'test_offline' cannot be restored to 'D:\database\Data\test_offline.mdf'. Use WITH MOVE to identify a valid location for the file.
Msg 1834, Level 16, State 1, Line 2
The file 'D:\database\Data\test_offline_log.ldf' cannot be overwritten. It is being used by database 'test_offline'.
Msg 3156, Level 16, State 4, Line 2
File 'test_offline_log' cannot be restored to 'D:\database\Data\test_offline_log.ldf'. Use WITH MOVE to identify a valid location for the file.
Msg 3119, Level 16, State 1, Line 2
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.

Ситуацию это, собственно, не меняет, мне просто любопытно, что конкретно нужно сделать, чтобы получить две базы, смотрящие на одни файлы.

ну я сейчас попробую.
хотя я помню ситуацию, когда в порядке эксперимента
мне довелось восстановить мастер одного сервера (2008) на другом (2012).
оба сервера локальные, на одном ноуте жили.
и вот копия мастера 2008 апгрэйдилась, сервер (2012) поднялся,
но базы-то у него уже были не свои, а от 2008.
и тут мне зачем-то понадобился 2008.
так вот у него ни одна юзерская база в онлайн не вышла,
и все базы вот эту самую ошибку писали, что уже файлы заняты
28 фев 18, 17:47    [21225866]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
Yasha123
Minamoto
пропущено...

Я честно попробовал. Нифига. Нужны какие то особые танцы с бубнами.
Вот что получается, если попытаться в файлы offline-базы восстановиться:

Msg 1834, Level 16, State 1, Line 2
The file 'D:\database\Data\test_offline.mdf' cannot be overwritten. It is being used by database 'test_offline'.
Msg 3156, Level 16, State 4, Line 2
File 'test_offline' cannot be restored to 'D:\database\Data\test_offline.mdf'. Use WITH MOVE to identify a valid location for the file.
Msg 1834, Level 16, State 1, Line 2
The file 'D:\database\Data\test_offline_log.ldf' cannot be overwritten. It is being used by database 'test_offline'.
Msg 3156, Level 16, State 4, Line 2
File 'test_offline_log' cannot be restored to 'D:\database\Data\test_offline_log.ldf'. Use WITH MOVE to identify a valid location for the file.
Msg 3119, Level 16, State 1, Line 2
Problems were identified while planning for the RESTORE statement. Previous messages provide details.
Msg 3013, Level 16, State 1, Line 2
RESTORE DATABASE is terminating abnormally.

Ситуацию это, собственно, не меняет, мне просто любопытно, что конкретно нужно сделать, чтобы получить две базы, смотрящие на одни файлы.

ну я сейчас попробую.
хотя я помню ситуацию, когда в порядке эксперимента
мне довелось восстановить мастер одного сервера (2008) на другом (2012).
оба сервера локальные, на одном ноуте жили.
и вот копия мастера 2008 апгрэйдилась, сервер (2012) поднялся,
но базы-то у него уже были не свои, а от 2008.
и тут мне зачем-то понадобился 2008.
так вот у него ни одна юзерская база в онлайн не вышла,
и все базы вот эту самую ошибку писали, что уже файлы заняты

Получилось через attach.

вот вижу теперь эту волшебную ошибку:

Set offline failed for Database 'test_offline'. 

Unable to open the physical file "D:\database\Data\test_offline.mdf". Operating system error 32:
"32(Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.)".
Unable to open the physical file "D:\database\Data\test_offline_log.ldf". Operating system error 32:
"32(Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.)".
Could not restart database "test_offline". Reverting to the previous status.
ALTER DATABASE statement failed. (Microsoft SQL Server, Error: 5120)

И база при этом перешла в Recovery pending.

Если вторую базу вывести в offline, первая успешно выводится в online, что логично.
28 фев 18, 17:55    [21225905]     Ответить | Цитировать Сообщить модератору
 Re: Проблема с восстановлением базы  [new]
neorus
Member

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

Ну вот собственно и убедился как руки чайника могут сотворить ситуацию, которую потом не могут повторить спецы.

Еще раз опишу ситуацию с самого начала.
12.02
Приложение перестало работать. Когда запустил менеджер SQL. У базы scout_storage стоял статус подозрительный . Тех поддержка сопровождающая предложение посоветовала выполнить скрипт
EXEC sp_resetstatus [scout_storage];
ALTER DATABASE [scout_storage] SET EMERGENCY
DBCC checkdb([scout_storage])
ALTER DATABASE [scout_storage] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ([scout_storage], REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE [scout_storage] SET MULTI_USER

Но появлялась ошибка - файл занят. Как я полагаю надо было прежде чем запускать скрипт - вывести его в оффлайн режим. Я же только отключил приложение которое писало в эту базу.

В итоге я решил переименовать базу в scout_storage-bad - это мне сделать удалось после очередной перезагрузки сервера. статус базы так и остался ждет восстановления.
Затем я создал в ручную без скрипта новую базу scout_storage и развернул туда последний бекап из bak файла (режим копии полная).

И все работало до перезагрузки спустя 2 недели.

Не могу понять почему при переименовании сменилось имя базы в менеджере, файлы в папке тоже переименовались, а вот ссылки остались на прежние scout_storage. Видимо из-за того что переименовывал тоже руками через менеджер.

Т.е. у меня теперь вот такая ситуация:

Картинка с другого сайта.
Картинка с другого сайта.

Как можно вернуть базу в рабочее состояние?
28 фев 18, 18:03    [21225958]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить