SQL.RU
    Все про SQL и базы данных
Microsoft SQL Server
Oracle
.NET Framework
MySql
Работа
MS Access
Visual Fox Pro
Delphi
Sybase
PowerBuilder
InterBase, Firebird, Yaffil
Форум
Java
Microsoft Office
PHP , Perl
Informix
Проектирование
C++
Visual Basic
Microsoft SQL Server
Error Messages
Присоединение файла .mdf без файла .ldf
Автор: Дед Маздай
Прислал: Glory

Q.
Проблема.Полетел диск с transaction log.База получили статус suspect.Удалось выполнить detach,а вот attach_single_file_db не проходит.Т.е.попытка присоединить базу (без лога) выдает ошибку

Server: Msg 945, Level 14, State 2, Line 1
Database 'test1' cannot be opened because some of the files could not be activated.
Server: Msg 1813, Level 16, State 2, Line 1
Could not open new database 'test1'. CREATE DATABASE is aborted.

Т.к. присоединяемый файл один (mdf) то это сообщение надо понимать относится непосредственно к нему.
Создание новой базы и подмена испорченной не помогает.
В приниципе у этой проблемы есть решение ?


A.
NB! Данный метод работает только для версии SQL2000

1. Создаем новую базу с таким же именем и такимиже по именам и расположению .mdf и .ldf файлами

2. Останавливаем сервер, подменяем файл .mdf

3. Стартуем сервер, не обращаем внимания на статус базы

4. Из QA выполняем скрипт
Use master 
go 
sp_configure 'allow updates', 1 
reconfigure with override 
go 

4. Там же выполняем
select status from sysdatabases where name = '<db_name>' 
и запоминаем/записываем значение на случай неудачи ребилда лога

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

6. Перезапускаем SQL Server

7. В принципе база должна быть видна (в emergency mode). Можно, например, заскриптовать все объекты

8. Из QA выполняем
DBCC REBUILD_LOG('<db_name>', '<имя нового лога с указанием полного пути>')
SQL Server скажет - Warning: The log for database '<db_name>' has been rebuilt.

9. Если все нормально, то там же выполняем
Use master 
go 
sp_dboption '<db_name>', 'single user', 'true' 
go 
USE <db_name> 
GO 
DBCC CHECKDB('<db_name>', REPAIR_ALLOW_DATA_LOSS) 
go 

9a.
Если Вам не удалось перевести базу в single user mode, то для проверки целостности данных можно попробовать dbo only mode
sp_dboption '<db_name>', 'dbo use only', 'true'


10. Если все в порядке, то
sp_dboption '<db_name>', 'single user', 'false' 
go 
Use master 
go 
sp_configure 'allow updates', 0 
go
Отзывы и оценки
DrunkWolf02 марта 2010, 17:34Оценка: N/A
Народ, команда: dbcc checkdb('имя базы', REPAIR_ALLOW_DATA_LOSS )
go - не проходит, говорит:
Сообщение 922, уровень 14, состояние 1, строка 1
База данных 'имя базы' восстанавливается. Дождитесь окончания восстановления.
И этот процесс, похоже будет длиться бесконечно. ЧТо делать?
lansky7610 февраля 2010, 16:20Оценка: 5
Спасибо огромное!
Morfeuz02 февраля 2010, 11:24Оценка: N/A
Спасибо!
Zelius15 января 2010, 15:52Оценка: 5
Спасибо!!!
Mari-Salt02 декабря 2009, 12:56Оценка: 5
Автор молодец! Спасибо!
simplysimply20 ноября 2009, 18:14Оценка: N/A
Большое.
Общечеловеческое.
Спасибо.
MoshkovEV10 сентября 2009, 11:38Оценка: 5
Автору респект и увжуха !!!
Если кому поможет: У меня пункты 9 и 10 сработали толко после полной перезагрузки системы.
unkis07 июля 2009, 01:28Оценка: 5
Спасибо, просто супер вроде помогло, работает даже с 2008, только некоторые инструкции нужно для 2005 выполнять
ITSoft01 июля 2009, 21:42Оценка: 5
Большое человеческое спасибо!
ALTSoft07 апреля 2009, 12:26Оценка: 5
Спас жизь всей конторе! СПАСИБО!!!
Green710 марта 2009, 17:04Оценка: 5
Отличная инструкция!!! Спасибо!
Евгешка15 февраля 2009, 03:36Оценка: 5
В MSSQL2005 пункты с 5 по 9 меняем на следующие команды:

alter database <db_name> set EMERGENCY, SINGLE_USER

dbcc checkdb('<db_name>', REPAIR_ALLOW_DATA_LOSS )

alter database <db_name> set ONLINE, MULTI_USER
(соответственно из 10-го убираем sp_dboption '<db_name>', 'single user', 'true' )

Автору огромное спасибо.
Каштан04 февраля 2009, 07:17Оценка: 5
+100000!!!!!!!!!!!!!!!! Огромное спасибо!!!!!!
Каштан03 февраля 2009, 18:36Оценка: 5
+100000!!!!!!!!!!!!!!!! Огромное спасибо!!!!!!
zSerj28 января 2009, 17:34Оценка: 5
Такой замечательный скрипт, Вам ребята надо в начале форума SQL поместить, это просто ХИТ 100%
zSerj28 января 2009, 17:28Оценка: 5
АВТОРУ ОГРОМНОЕ СПАСИБО !!! и Уважение за этом маленький , но очень сильный скрипт. Он просто не представляет сколько ЗАДНИЦ спас этот код. Авторам: Дед Маздай и Glory РЕСПЕКТ и УВАЖУХА от разработчиков(IT) и программистов России.
Garage17 декабря 2008, 07:33Оценка: 5
ФУУХХ 7.30 и и мы её восстановили....... Огромное СПАСИБО и respect... Ждем в Белгороде на ПИВО....
veteransha06 декабря 2008, 17:36Оценка: 5
ОГРОМНОЕ человеческое СПАСИБО ! Уже воспользовалась РАЗ!ВСЕ Восстановилось!
ПРОСТО ГЕНИАЛЬНОЕ РЕШЕНИЕ!
hotwhite04 июля 2008, 13:59Оценка: 5
Спасибо :)
RADDD18 апреля 2008, 18:46Оценка: 5
Большое спасибо! помогло на раз :)
Nadal21 февраля 2008, 21:07Оценка: 3
Нота конечно интересная и познавательная, но читая все эти благодарности понимаешь что это граната в руках обезяны...хотя бы предупреждали чем это грозит для БД и бизнеса...грустно
Zenia22 ноября 2007, 16:54Оценка: 5
Жизнь прекрасна, СПАСИБО
AndreyST04 октября 2007, 16:59Оценка: 1
Нихрена не получилось. Вообщем что-то не так. Вроде все скрипты выполняются, но база не переводиться из состояния Суспект
swups24 сентября 2007, 19:17Оценка: 5
Спасибо, очень выручила статья!!!
Ренат Нагаев17 сентября 2007, 15:22Оценка: 5
Дед Маздай - ты нереальный кул! твой респект без меры!!!
d19741914 сентября 2007, 14:21Оценка: N/A
Спасибо огромное!!!!
whim27 августа 2007, 15:48Оценка: 5
Спасибо огромное!!!!
Чудодейственное лекарство спасающее жизнь :)))
whim27 августа 2007, 15:47Оценка: N/A
Спасибо огромное! Чудодейственное лекарство!!! :)
Solnake06 августа 2007, 10:26Оценка: 5
ВСе пишут благодарности, от меня тоже бооольшая благодарность. Вся работа за 2 месяца была на базе, все скрипты и дивным образом пропали все бекапы.
Большое спасибо
ZealotUa26 июля 2007, 08:32Оценка: 5
РЕСПЕКТ!
Будеш в Киеве звони 4936661, пиво за мной!
dare05 июня 2007, 10:59Оценка: 5
Блин , а как исправить "Если Вам не удалось перевести базу в single user mode,"

Указанное решение "sp_dboption '<db_name>', 'dbo use only', 'false' а не true" не помогают
ProMan31 мая 2007, 14:56Оценка: 5
Здорова
Есть Маленькое уточнение к вашеописаному методу!
Как показала практика - он работает НО
Сквери Онлайзер нада запускать на другой базе! На той базе которая не атачится он выдает ошибку! Поэтому запускается на master !
И возникли проблемы с текущими данными!
Тоесть данные за период (до вчера) востановились! А вот с текущими , которые вбивались на момент когда упала база - немного пох....лись!

Но хоть что то востановилось!
Спасибо!
glyzin200724 мая 2007, 16:54Оценка: 5
Молодец, респект, спасибо очень помогло , правда пришлось sp_dboption '<db_name>', 'dbo use only', 'false' а не true делать в пункте 9.а
Divisi0n_by_zer016 апреля 2007, 17:53Оценка: 5
ФАК спас ещё одного админа :)) спасибо!

зы единственный недочётик, на котором сначала запнулся - 'single_user' пишется через пробел, а не через андерлайн...
dron10 апреля 2007, 11:02Оценка: 5
!!!!!!
vadimegorov28 марта 2007, 19:44Оценка: 5
Спасибо дружище! Наши задницы ты спас - мы уже вазелин заготавливали...
Victor21 марта 2007, 11:16Оценка: 5
ОГРОМНОЕ СПАСИБООООО!!!
Martin19 марта 2007, 14:45Оценка: 5
Thank you very much
Мы13 марта 2007, 19:54Оценка: 5
большое вам человеческое СПАС.ИБО!!!
Jeck01 марта 2007, 11:01Оценка: 5
Спасиба, мужик, будешь в Мурманске - с меня пиво!
Weil-Ze-Wul28 февраля 2007, 14:30Оценка: 5
Автору - поклон до земли... Спасены выходные моих операторов... =))
Andrey27 февраля 2007, 10:20Оценка: 5
Дед Мазай и как только вы нашли такое решение.
Ush16 февраля 2007, 13:47Оценка: 5
Огромное спасибо, спасена база магазина и месяц работы...и все живы...
Агент Ромашка16 февраля 2007, 07:04Оценка: 5
Респект и уважуха авторам!!! :-)
А то я уж было собрался на работе ночевать...
08 февраля 2007, 17:00Оценка: 5
спасибо
Андрей08 февраля 2007, 10:28Оценка: 5
Величайшее спасибо. Для таких чайников как я это просто волшебство.
BTA08 февраля 2007, 08:33Оценка: 5
Суперски!
Второй раз уже пользуюсь-всё как доктор прописал! И хотя можно было восстановить из бекапа, но специально устроил показательное восстановление для "молодых" :)
Дай бог здоровья и успехов Деду!
Игорь07 февраля 2007, 13:37Оценка: 5
Спасибо несколько дней работы филиала восстановлены
Almaz05 февраля 2007, 14:07Оценка: 5
You BEST OF THE BEST
Андрей02 февраля 2007, 22:41Оценка: 5
СПАСИБО!!!!!!!!!!!!!!!!!!!!!!!!
MDV19 января 2007, 10:19Оценка: 5
КлёВА! Классно! Отлично! Спасибо огромное! Годовая отчётность спасена!!!!
Дмитрий17 января 2007, 09:34Оценка: 5
Еще раз огромное спасибо!!! Вылечили 2 базы.
Holger03 января 2007, 19:03Оценка: 5
Спасибо огромное! Крайне полезная статья. Орден на грудь и бочку пива!
03 января 2007, 11:49Оценка: 5
Дай бог тебе здоровья и жену добрую
bob18 декабря 2006, 14:30Оценка: 5
Спасибо! Все просто, а сам не додумался.
ГуестЪ08 декабря 2006, 12:10Оценка: 5
Автору огромное списибо :)
TAA30 ноября 2006, 14:41Оценка: 5
Весь день упражнялся, пока не нашел эту статью. СПА-АСИ-ИБО-о...
M15 ноября 2006, 16:50Оценка: 5
И я сегодня поднялся. Спасибо огромное!))
DEF10 ноября 2006, 21:29Оценка: 5
И мы тоже поднялись благодаря этой статье. Спасибо!
Алла10 ноября 2006, 16:09Оценка: 5
Огромное спасибо автору!!! Спас.
farmonol10 ноября 2006, 01:27Оценка: 5
Спасибо выручили!
1Cnick04 ноября 2006, 15:22Оценка: 5
Огромное спасиба автору!
Squid23 октября 2006, 13:13Оценка: 5
пришлось воспользоватся. Метод действенный. Автору большое спасибо !!
Al02 октября 2006, 13:36Оценка: 5
Спасибо!!!!!
франк29 сентября 2006, 23:29Оценка: 5
прикольно
monsenior29 сентября 2006, 11:26Оценка: N/A
неточто респект а намного больше
max4428 сентября 2006, 09:40Оценка: 5
Помогло, супер.Огромное спасибо.
BC9720 сентября 2006, 17:00Оценка: 5
Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!1
Shurik12 сентября 2006, 10:51Оценка: 5
Супер,большое спасибо
Dasha06 сентября 2006, 12:39Оценка: 5
Присоединяюсь. Спасибо огромаднейшее!! :)
all23 августа 2006, 12:49Оценка: 5
НЕЧЕЛОВЕЧЕСКОЕ СПАСИБО...))
Hratchia12 августа 2006, 10:23Оценка: 5
Отлично!!!
фыва10 августа 2006, 13:38Оценка: 5
афтару зач0т, как раз пригодилось
st08 августа 2006, 17:12Оценка: 5
Бооольшое спасибо! Все работает!
Игорь07 августа 2006, 19:08Оценка: 5
Супер! Гениально! Помогло! Спасибо огромное автору!!!
Igor05 августа 2006, 12:39Оценка: 5
Огромное спасиво!Работает 100%
MakS14 июля 2006, 12:57Оценка: 5
Тема - актуальна, решение - гениально. Огромное человеческое спасибо авторам за кучу спасённой инфы и нервов.
_Максим_10 июля 2006, 12:31Оценка: 5
Спасибо, с меня пиво =). Обращайся ;)
kvd23 мая 2006, 19:45Оценка: 5
+5
йцукен12 мая 2006, 15:09Оценка: 5
РЕАЛЬНЫЙ РЕСПЕКТ АВТОРУ!
ALKIR07 мая 2006, 10:53Оценка: 5
Вот уж никогда не думал что доживу до Физического падения сервера с базами ... - Автору ОГРОМНОЕ СПАСИБО!!!
qwert17 апреля 2006, 13:51Оценка: 5
афтар! РЫСПЕКТ! пеши исчо!
Михаил27 марта 2006, 13:29Оценка: 5
БААААААААААЛЬШОЕ СПАСИБО
Roman22 марта 2006, 23:28Оценка: 5
Интересно - автор тоже через такой гемор прошел. Есть ведь люди- не жмуться
Хрюккиннен22 марта 2006, 11:49Оценка: 5
Спасибо тебе, Дедушка... Спас ты меня.
gav11 марта 2006, 18:33Оценка: 5
Спаситель!!!
woto06 марта 2006, 15:46Оценка: 5
Большое человеческое спасибо. Сработало.
Nika01 марта 2006, 13:41Оценка: 5
Огромное СПАСИБО!!!!
Zahary16 февраля 2006, 14:31Оценка: 5
Сегодня эта статья спасла мягкие места сотрудников отдела программирования :) Большое спасибо!
Саша08 февраля 2006, 19:15Оценка: 5
Спас от позора и седины!
Отзывчивый28 декабря 2005, 10:59Оценка: 5
Огромное спасибо. Все заработало. Не будь данной помощи все сотрудники повесились бы, восстанавливая дакоменты.
panda21 декабря 2005, 15:49Оценка: 5
Спасибо...классный метод.С меня большая кружка ПИВА...:)
GetAssista19 декабря 2005, 17:56Оценка: N/A
Не буду оригинален :) СПАСИБО!
Ксения29 ноября 2005, 21:05Оценка: 5
Ребята, вы - молодцы!
Тёмыч12 октября 2005, 08:37Оценка: 5
Вот это грамотно! Второй раз пользуюсь! СПАСИБО! А так бы КИРДЫК!!
DrShad03 октября 2005, 17:40Оценка: 5
сенкс
Николай28 сентября 2005, 16:25Оценка: 5
Спасибоогромное
Olenka13 сентября 2005, 12:23Оценка: 5
Огромное спасибо! Столько работы спасли!!!!!!!!!
Петрович05 сентября 2005, 17:49Оценка: 5
Дед Маздай - Форевер! Очень помог! СПАСИБО!
CASPER04 августа 2005, 11:00Оценка: 5
Супер !!! Чуваки огромный СЕНКС !!!! Еслиб не вы мы бы повесились НАХРЕН !!!!С П А С И Б О !!!
rralf19 июля 2005, 18:16Оценка: 5
tnx :)
Sadok29 июня 2005, 14:27Оценка: 5
Спасибо огромное.
Vasya20 июня 2005, 17:11Оценка: 5
ОГРОМНОЕ Спасибо автору!!!
SHKoder09 июня 2005, 11:41Оценка: 5
супер, очко дрожало за базу от паталка до стен в диапазоне... реально чувак прошитый, я бы больше оценку паставил.... все же есть на свете админы шарящие...
BusyMan28 мая 2005, 15:09Оценка: 5
Это бывает еще полезно и в тех слуачях, когда запустишь что-нибудь нехилое, прервешь выполнение, а дождаться обработки лога при следующем подключении БД нет возможности...
Олег20 мая 2005, 18:40Оценка: 5
Спасибо! Всё получмлось.
WellSlava16 мая 2005, 20:26Оценка: 5
Спасибо огромное. Выручил (автор).
Habilis13 мая 2005, 11:04Оценка: 5
Поистине священные строки!!!
Fenix12 мая 2005, 11:19Оценка: 5
Огромное спасибо! Здорово! Все восстановили. Знакомые не верят, что возможно так вот просто восстановить базу без лога. БЫЛО БЫ невозможно без этой стотьи. Еще раз спасибо автору.
04 мая 2005, 14:54Оценка: 5
Зашибись
Tlya14 апреля 2005, 12:15Оценка: 5
Огромное спасибо. Это надо выписать, распечатать, приклеть на видное место и ни за что не потерять.
Александр Гладченко23 марта 2005, 17:27Оценка: 5
В п.5 ошибочка, нужно -32768 (пропущен минус)
Константин04 марта 2005, 11:40Оценка: 5
Как всем понравилось :))) Присоединяюсь :)))
pag02 марта 2005, 20:26Оценка: 5
Супер круто, спас волосы на голове главбуха, иначе бы сама себе выдрала, сто пудов...
андрей02 марта 2005, 12:25Оценка: 5
спасено 2 дня и 1500 документов спасибо
Кенджи-но Сората18 февраля 2005, 10:08Оценка: 5
Огромное спасибо автору!
Алексей09 февраля 2005, 04:23Оценка: 5
Жизнь снова может стать прекрасной. Спасибо за это, Дед Маздай.
Eugene and Abushka07 февраля 2005, 02:37Оценка: 5
Большое спасибо
Beginner10 декабря 2004, 11:56Оценка: 5
Хотя я в этом деле новичок, получилось с первого раза. Большая СПАСИБА!
A13 ноября 2004, 19:01Оценка: 5
Спасибо,друг! За такое медаль полагается!
Pauline28 октября 2004, 16:24Оценка: 5
Спасибо, спасли нам жизнь :)



Необходимо войти на сайт, чтобы оставлять комментарии


Раздел FAQ: Microsoft SQL Server / Error Messages / Присоединение файла .mdf без файла .ldf
Rambler's Top100  Политика сайта