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

Откуда:
Сообщений: 25
Здравствуйте!
(Я здесь впервые, пока не разобрался на форуме, а вопрос мне очень важен. Если возможно, не ругайте сразу, при необходимости перенесите мой вопрос в другую ветку)

Вопрос следующий:
имеется большое количество баз данных, состоящих из двух файлов data.mdf и log.ldf
работаем на SQL Server 2000
при "Атаче" через "ИнтерпрайзМенеджер" все проходит славно, после подключаем в "КуериАналайзере"
а как подключить базу данных если только один файл *.mdf без лога?
у нас кто-то подключал, но никто не помнит как.
копирование к mdf лога из другой БД не прокатывает, интерпрайз ругается...

С уважением, aprendiz.
12 сен 09, 11:52    [7650824]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
читать-то умеете, горе админы? Тогда здесь и здесь
12 сен 09, 12:35    [7650856]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
Ken@t
читать-то умеете, горе админы? Тогда здесь и здесь

+1024, а еще есть такая супер фишка, как поиск по форуму
12 сен 09, 12:50    [7650868]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

Откуда:
Сообщений: 25
Ken@t
читать-то умеете, горе админы? Тогда здесь и здесь


Ozerov
+1024, а еще есть такая супер фишка, как поиск по форуму


Спасибо, попробую разобраться.
А чтобы что-то найти, на форуме, где никогда раньше не был, надо суметь грамотно сформулировать вопрос. Из тех вопросов, что я смог придумать, я не нашел ответов на нужную мне информацию, поэтому обратился к специалистам.
К тому же, зачастую, вопросы которые кажутся вам настолько простыми, что и задумываться не стоит, других ставят в тупик. Мой случай.
Все мы специалисты в своей области. Я юрист. Мне что, чтобы подключить базу данных надо идти Бауманку заканчивать? Можете помочь, спасибо! Не можете, что же, будем искать.

С уважением, aprendiz.
12 сен 09, 16:56    [7651159]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

Откуда:
Сообщений: 25
Опишу проблему чуть подробнее:
К нам из регионов поступает информация, в виде файлов базы данных owl_data.mdf и owl_log.ldf.
Далее мы к себе на машину с WinXP SP3 и SQL Server 2000 SP4 в соответствующую папку копируем указанные файлы. Аттачим БД в SQL Enterprise Manager под логином "sa", в поле Specify database owner. После в SQL Query Analyzer прописываем EXEC sp_change_users_login ‘Auto_Fix’, ‘ANY’ и все, с БД можно работать!
Но в последнее время log.ldf перестали присылать. Тот, кто сидел на этой задаче до меня как-то умудрялся подключать БД с одним только data.mdf, а я не знаю как.

Воспользовался поиском по форуму, нашел следующую ссылку, которая соответствуем моему случаю https://www.sql.ru/faq/faq_topic.aspx?fid=123
Однако проблема не решена.
Создать, скопировать и подменить проблем нет, а при Attach в Enterprise Manager выдается следующее сообщение об ошибке: см. картинку.

Где здесь собака порылась?
14 сен 09, 22:29    [7658121]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

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

К сообщению приложен файл. Размер - 0Kb
14 сен 09, 22:31    [7658127]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
Tako
Member

Откуда:
Сообщений: 65
А может стоит попросить филиалы присылать вам бэкапы баз?
14 сен 09, 23:22    [7658235]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

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

Это было бы идеально! Но там специалисты ничем не лучше меня!
Сделать бэкап они не могут, зато порушить ключи и связи в базах за ради пожалуйста!
15 сен 09, 08:05    [7658577]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
aprendiz

Создать, скопировать и подменить проблем нет, а при Attach в Enterprise Manager выдается следующее сообщение об ошибке: см. картинку.
Где здесь собака порылась?


"При аттаче" - это какой шаг ?
15 сен 09, 08:51    [7658660]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
https://www.sql.ru/faq/faq_topic.aspx?fid=123
руководствуясь выше указанной статьей сделал себе FAQ с маленькими изменениями и дополнениями:
--1.
Use master 
go 
sp_configure 'allow updates', 1 
reconfigure with override 
go 

--2. Там же выполняем 
select status from sysdatabases where name = 'Имя_Вашей_БД' 
--и запоминаем/записываем значение на случай неудачи ребилда лога 

--3.Там же выполняем 
update sysdatabases set status= 32768 where name = 'Имя_Вашей_БД' 

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

--5.Перед выполнением переименовать старый лог)
DBCC REBUILD_LOG('Имя_Вашей_БД', 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\Имя_Вашей_БД_Log.LDF')

--6. Если все нормально, то там же выполняем 
Use master 
go 
sp_dboption 'Имя_Вашей_БД', 'dbo use only', 'false' 
go
sp_dboption 'Имя_Вашей_БД', 'single user', 'true' 
go 
USE Имя_Вашей_БД 
GO 
DBCC CHECKDB('Имя_Вашей_БД', REPAIR_ALLOW_DATA_LOSS) 
go 


--7. Если все в порядке, то 
sp_dboption 'Имя_Вашей_БД', 'single user', 'false' 
go 
Use master 
go 
sp_configure 'allow updates', 0 
go
--8. Перезапускаем SQL Server 
--Всё БД доступна
--теперь можно либо выполнить скрипт для смены owner-а БД или детач ->атач под нужным именем
15 сен 09, 11:04    [7659376]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
ТАРАКАН
Member

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

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

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

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

4. Из QA выполняем скрипт
15 сен 09, 11:06    [7659399]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
http://msdn.microsoft.com/ru-ru/library/ms178630(SQL.90).aspx
смена owner-а

USE имя_БД_у_которой_надо_сменить_owner-a
GO
EXEC sp_changedbowner 'имя_нового_ownera'
15 сен 09, 11:11    [7659452]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

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

Это шаг... сейчас посчитаю...
Впрочем, я неправильно понял первые строки подсказки. Остановить SQL-сервер, это в трее можно сделать, а я сперва понял, что это надо в Enterprise Manager делать. Получается, я не сервер останавливал, а детачил старую базу, менял mdf и пытался приаттачить получившееся.
Я понял, где я сделал ошибку...
Спасибо!
15 сен 09, 20:08    [7664053]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

Откуда:
Сообщений: 25
ТАРАКАН,

Благодарю! Я завтра попробую сделать все, как Вы сказали, надеюсь получится.

А пока, опишу, как я сегодня бодался с подключением и что из этого вышло... Точнее, НЕ вышло...

Итак:
1-3, останавливаем, подменяем, стартуем... ура, полет нормальный.

4. в QA прописываем скрипт...
Сразу вопрос: QA запускаем отдельно, а не из Enterprise, так как из Enterprise все одно QA ругается!
Перед прописываением скрипта какую базу выбирать? master или мою owl? сразу скажу, что моей базы не видно, так что все остальное проделывал с master.
Скрипт отработал без ошибок, отклик: см. скрин

К сообщению приложен файл. Размер - 0Kb
15 сен 09, 20:17    [7664083]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

Откуда:
Сообщений: 25
далее - скрипт - select status и т.д.
и запоминаем/записываем значение на случай неудачи ребилда лога
Какое значение? Где оно?

К сообщению приложен файл. Размер - 0Kb
15 сен 09, 20:18    [7664092]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

Откуда:
Сообщений: 25
далее -

update sysdatabases set status= 32768

отклик - (0 row(s) affected)

6. Перезапускаем SQL-Server, имеется ввиду стоп/пуск или выгрузить из трея и запустить вновь?
(идиотский вопрос, но куда уж без него)

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

У меня ничего не видно и статус базы как и прежде suspect… что такое emergency mode? Где должно быть видно базу?

8. Далее в QA прописываем DBCC REBUILD_LOG...
и вылезает куча ошибок: см. скрин

К сообщению приложен файл. Размер - 0Kb
15 сен 09, 20:23    [7664115]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

Откуда:
Сообщений: 25
Собственно, дальше не продолжал выполнение помощи...
Что я делаю не так? Где я косячу? Или я что-то в принципе недопонимаю?
15 сен 09, 20:25    [7664122]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

Откуда:
Сообщений: 25
ТАРАКАН,

Так-с, предвижу проблему в этом пункте:

--5.Перед выполнением переименовать старый лог)
DBCC REBUILD_LOG('Имя_Вашей_БД', 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\Имя_Вашей_БД_Log.LDF')

DBCC и т.д. - это скрипт который меняет log? или мне надо вручную переименовать log, а потом запускать этот скрипт?
Указанный Вами путь C:\Program Files\Microsoft SQL Server и т.д. обязателен? Или должен быть тот, где лежит моя база?
15 сен 09, 20:36    [7664150]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
так-с
Guest
aprendiz
Собственно, дальше не продолжал выполнение помощи...
Что я делаю не так? Где я косячу? Или я что-то в принципе недопонимаю?


уберите знаки "меньше"(<) и "больше"(>) в текстах скрипта
например в тексте из рисунка
select status from sysdatabases where name = '<owl>'
должен быть
select status from sysdatabases where name = 'owl'
15 сен 09, 21:08    [7664245]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

Откуда:
Сообщений: 25
так-с,

О, это существенное замечание, хотя до обидного простое!
Спасибо!
15 сен 09, 23:07    [7664566]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
aprendiz
ТАРАКАН,

Так-с, предвижу проблему в этом пункте:

--5.Перед выполнением переименовать старый лог)
DBCC REBUILD_LOG('Имя_Вашей_БД', 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\Имя_Вашей_БД_Log.LDF')

DBCC и т.д. - это скрипт который меняет log? или мне надо вручную переименовать log, а потом запускать этот скрипт?
Указанный Вами путь C:\Program Files\Microsoft SQL Server и т.д. обязателен? Или должен быть тот, где лежит моя база?

5 пункт создает вам новый файл LDF и для того чтоб он успешно создался надо либо поместить его в другу папку или поддругим назвнием или удалить старый LDF файл.
16 сен 09, 09:46    [7665286]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
ТАРАКАН
Member

Откуда:
Сообщений: 439
рекомендую начать выполнение заного и убрать везде знак > я неписал нигде о использовании этого знака.
16 сен 09, 09:48    [7665303]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
aprendiz
Member

Откуда:
Сообщений: 25
так-с,

Ozerov,

ТАРАКАН,

Спасибо всем огромное! Все прошло успешно!
Одно только смущает, неужели нет варианта проще?
Нет, мне и так не сложно, наоборот, интересно даже...
Но, что-то мне подсказывает, что есть и другие варианты, без такого количества скриптов...
16 сен 09, 19:47    [7669944]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
Ёжик`
Member

Откуда:
Сообщений: 5992
Есть проще - работать с бекапом.

Филиалы делают бекапы (одной командой кстати, и не нужно даже в EM заходить)
А еще лучше скрипт на vbs засунуть в виндовый планировщик, который будет
a) делать бекап
б) архивировать
в) посылать архив по почте или копировать на ftp

У себя сделать скрипт на vbs, который будет
а) распаковывать полученный архив
б) восстановить базу из бекапа в новую или существующую базу (одной командой, с изменением пути под местные реалии)
в) накатить на полученную базы нужные скрипты для получения всех нужных прав.

Получать почту автоматом посложнее, но можно в почтовике настроить.

В этой схеме человеческий фактор сведен к минимуму, и сиквел нигде не нужно стопорить.
16 сен 09, 22:08    [7670330]     Ответить | Цитировать Сообщить модератору
 Re: Подключение БД - *.mdf без *.ldf  [new]
Ozerov
Member

Откуда: Москва
Сообщений: 3650
Так то оно так, только зачем вбс мучать, когда можно все это, с помощью SQL сервера организовать ?..
17 сен 09, 10:34    [7671346]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить