Вход | Регистрация
 

потерянный *.ldf

потерянный *.ldf
Я
   3ak
 
05.02.13 - 11:15
Так получилось, что грохнули ldf, с концами.
Создал в SQL 2008 новую базу , подпихнул старый mdf.
Стала в автономном режиме, сделал запрос ALTER DATABASE Trade SET ONLINE
выдает
Сообщение 5173, уровень 16, состояние 1, строка 1
Один или несколько файлов не соответствуют основному файлу базы данных. Если предпринимается попытка присоединить базу данных, повторно выполните операцию с использованием правильных файлов. Если такая база данных существует, файл может быть поврежден и должен быть восстановлен из резервной копии.
Файл журнала "D:\SQL1cLog\Trade\Trade_log.ldf" не соответствует первичному файлу. Возможно, он принадлежит другой базе данных, либо этот журнал был ранее перестроен.
Сообщение 945, уровень 14, состояние 2, строка 1
Не удалось открыть базу данных "Trade" вследствие недоступности файлов, нехватки памяти или места на диске. Подробности см. в журнале ошибок SQL Server.
Сообщение 5069, уровень 16, состояние 1, строка 1
Не удалось выполнить инструкцию ALTER DATABASE.

как ее оживить ? Курил интернеты , но там в основном решения для SQL 2000 (
База нужна ппц как (
   shuhard
 
1 - 05.02.13 - 11:16
(0) ты ошибся форумом
sql.ru
   МихаилМ
 
2 - 05.02.13 - 11:22
sp_attach_single_file_db
   3ak
 
3 - 05.02.13 - 11:43
(2)
sp_attach_single_file_db @dbname = 'Trade2',
@physname = 'D:\SQL1cBase\Trade\Trade.mdf'

Сообщение 5120, уровень 16, состояние 101, строка 1
Не удалось открыть физический файл "D:\SQL1cBase\Trade\Trade.mdf". Ошибка операционной системы 32: "32(Процесс не может получить доступ к файлу, так как этот файл занят другим процессом.)".

ProcessExplorer не показывает что кто-то к нему обращается
   1Сергей
 
4 - 05.02.13 - 11:50
(3) дык, скул же и держит его
   Ёпрст
 
5 - 05.02.13 - 11:53
   Ёпрст
 
6 - 05.02.13 - 11:57
   3ak
 
7 - 05.02.13 - 11:58
(5) все бы ничего но на шаге
DBCC REBUILD_LOG('Trade', 'D:\SQL1cLog\Trade.ldf')

Сообщение 2526, уровень 16, состояние 3, строка 1
Неправильная инструкция DBCC. Правильный синтаксис и список параметров DBCC см. в документации.
   3ak
 
8 - 05.02.13 - 12:05
(6) http://dev.by/blogs/main/vosstanovlenie-bd-v-ms-sql-server-2005

это помогло вроде, спасибо )
   Lionee
 
9 - 05.02.13 - 12:08
и как можно ldf потерять? (
   пипец
 
10 - 05.02.13 - 12:13
да скуль небось переставляли
   Сергиус
 
11 - 05.02.13 - 12:42
для версии 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

Для 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' )

Попробуй для 2008-го также сделать..
   Mikeware
 
12 - 05.02.13 - 12:44
(11)-Мальчик, как тебя зовут?
-- Здрррасте!
- Ты че тормоз?
-- Вася!
- Ладно, Вася, скока те лет?
-- Сам ты тормоз!
©
   Сергиус
 
13 - 05.02.13 - 12:45
(12) информация лишней не бывает)
   Mikeware
 
14 - 05.02.13 - 12:51
(13) Ёп дал ссылки на это в (5) - за час до тебя...

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.