Имя: Пароль:
IT
 
потерянный *.ldf
0 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 (
База нужна ппц как (
1 shuhard
 
05.02.13
11:16
(0) ты ошибся форумом
sql.ru
2 МихаилМ
 
05.02.13
11:22
sp_attach_single_file_db
3 3ak
 
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 не показывает что кто-то к нему обращается
4 1Сергей
 
05.02.13
11:50
(3) дык, скул же и держит его
5 Ёпрст
 
05.02.13
11:53
6 Ёпрст
 
05.02.13
11:57
7 3ak
 
05.02.13
11:58
(5) все бы ничего но на шаге
DBCC REBUILD_LOG('Trade', 'D:\SQL1cLog\Trade.ldf')

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

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