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

Откуда:
Сообщений: 19
Всем привет! Столкнулся с проблемой, пока не могу понять где искать - в SQL сервере или в настройках винды. В общем, есть Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86), установлен на Windows Server 2003 SP2 Enterprise edition. Я являюсь администратором БД и одним из админов сервера. Все файлы БД лежат у меня на диске D, задача - перенести лог-файл на другой диск L. Делаю ALTER DATABASE ... MODIFY FILE, указывая новый путь - в ответ сервер сообщает мне, что все норм и файл лога будет создан после рестарта БД. Так как подходило время планового рестарта сервера, делаю рестарт сервера. После рестарта проверяю наличие нового файла лога на диске - отсутствует. Пробую зайти SSMS - пишет мне про ошибку авторизации в БД по умолчанию (по умолчанию стоит та БД, с которой произвожу указанные действия). Ставлю по умолчанию другую БД, коннекчусь, но произвести какие-то действия над моей БД не получается - пишет про ошибку авторизации. Смотрю файл errorlog, вот что в нем написано из ошибок :
Error: 17207, Severity: 16, State: 1.
FileMgr::StartLogFiles: Operating system error 2(error not found) occurred while creating or opening file 'L:\Microsoft SQL Server\Log\DB1_PRIMARY_LOG.LDF'. Diagnose and correct the operating system error, and retry the operation.
The log cannot be rebuilt because the database was not cleanly shut down.

Делаю select * from sys.master_files - для файла лога указан новый путь, все чин по чину.

Даю в папку нового лога полные права вообще всем - everyone (хотя до этого стояли права и для юзеров SQL сервера, и для админа) - опять перегружаю сервер, то же самое. Хотя, зайдя в папку где должен быть новый лог Total Commander'ом я могу там создавать файлы, удалять их и так далее.

В общем, сделал ALTER DATABASE ... MODIFY FILE, указав старый лог - все заработало, работоспособность БД восстановилась.

Может у кого-то есть опыт, где искать причину? Сейчас вспоминаю, что когда БД только переносили с другого сервера, файл лога так же не получилось создать в этой папке. Такое ощущение, что для процесса SQL сервера стоят какие-то ограничения...
8 янв 12, 13:44    [11869981]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с переносом лога БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9830
Все потому что ленимся документацию читать...
BOL
Процедура запланированного перемещения
Для запланированного перемещения файлов журнала или данных выполните следующие действия.

Выполните следующую инструкцию:
ALTER DATABASE database_name SET OFFLINE;

Переместите файл или файлы в новое расположение.

Для каждого перемещенного файла выполните следующую инструкцию:
ALTER DATABASE database_name MODIFY FILE ( NAME = logical_name, FILENAME = 'new_path\os_file_name' );


Выполните следующую инструкцию:
ALTER DATABASE database_name SET ONLINE;


Проверьте правильность изменений с помощью следующего запроса:
SELECT name, physical_name AS CurrentLocation, state_desc
FROM sys.master_files
WHERE database_id = DB_ID(N'<database_name>');


Либо sp_detach_db, скопировать файл в новое место, sp_attach_db.
8 янв 12, 14:00    [11870032]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с переносом лога БД  [new]
and761
Member

Откуда:
Сообщений: 19
Вообще копирование лог-файла в новое место очень не рекомендуется, у нас сотрудник по этому поводу получил рекомендации от техподдержки. Сейчас точно не помню, но общая причина в том, что там какой-то начальный индекс вычисляется по физическому имени файла вкупе с путем, и перенося файл в новое место этот индекс сбивается - в общем, точно у него узнаю только на неделе. В общем, сюда отпишу, как узнаю подробности.
А что касается BOL - так ведь мое изменение пути лог-файла ALTER DATABASE... прошло без ошибок и сервер четко сказал, что все в порядке и изменения проявятся только после следующего перезапуска! Тем более, что такая же проблема возникала и при самом первом разворачивании БД на новом сервере, когда БД еще не была запущена. Такое ощущение, что он ФИЗИЧЕСКИ не может создать файл в новой папке. Может, какие-то ограничения именно для процесса?
8 янв 12, 14:17    [11870081]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с переносом лога БД  [new]
invm
Member

Откуда: Москва
Сообщений: 9830
and761
Вообще копирование лог-файла в новое место очень не рекомендуется, у нас сотрудник по этому поводу получил рекомендации от техподдержки. Сейчас точно не помню, но общая причина в том, что там какой-то начальный индекс вычисляется по физическому имени файла вкупе с путем, и перенося файл в новое место этот индекс сбивается - в общем, точно у него узнаю только на неделе. В общем, сюда отпишу, как узнаю подробности.

Что еще за индекс, зависящий от физического расположения файлов БД?
and761
А что касается BOL - так ведь мое изменение пути лог-файла ALTER DATABASE... прошло без ошибок и сервер четко сказал, что все в порядке и изменения проявятся только после следующего перезапуска! Тем более, что такая же проблема возникала и при самом первом разворачивании БД на новом сервере, когда БД еще не была запущена. Такое ощущение, что он ФИЗИЧЕСКИ не может создать файл в новой папке. Может, какие-то ограничения именно для процесса?
Сервер не занимается копированием файлов БД. Инструкция alter database изменяет только метаданные. Поэтому физически переместить файл в новое место вы должны самостоятельно.
8 янв 12, 14:34    [11870122]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с переносом лога БД  [new]
and761
Member

Откуда:
Сообщений: 19
Ну в общем сейчас я доказать ничего не могу - как выйду на работу (послезавтра) и пообщаюсь с коллегой, то напишу сюда. Забыл еще указать - модель БД у меня SIMPLE.
8 янв 12, 14:41    [11870145]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить