Как прикрепить MDF без файла журнала? [закрытый]



Я пытаюсь прикрепить Yafnet.mdf в SQL Server Management Studio, где нет файла журнала.



Я получаю ошибку ниже. Есть идеи, как это можно сделать?




исключение возникло при выполнении инструкции Transact-SQL или пакета.
(Microsoft.От SQLServer.ConnectionInfo)



не удается открыть физический файл "C:sql_logsYAFnet_log.ЛДФ". Операционная система
Ошибка 2: "2 (система не может найти указанный файл.)".
(сервер Microsoft SQL, Ошибка: 5120)


939   2  

2 ответов:

Для вашей начальной ситуации, кажется, вы пробовали что-то вроде этого (или то, что графический интерфейс готовит для вас, когда вы проходите через диалоги):

CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH;
Однако для этого метода требуется как файл mdf, так и файл ldf. В противном случае вы получите сообщение об ошибке, подобное:

Msg 5120, Уровень 16, Состояние 101, Строка 1
Не удается открыть физический файл "C:\sql_logs\YAFnet_log.ЛДФ". Ошибка операционной системы 2: "2 (система не может найти файл указанный.)".

Теперь есть способ продолжить, даже если у вас есть только файл mdf. Предполагая, что у вас есть файл mdf, который был правильно отсоединен от SQL Server, вы должны иметь возможность присоединить файл mdf Без файла журнала, используя следующий синтаксис:
CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH_REBUILD_LOG;

Однако, похоже, что в вашем случае файл не был должным образом отделен от SQL Server:

Msg 1813, Уровень 16, Состояние 2, Строка 1
Физическое имя файла "C:\sql_logs\YAFnet_log.ЛДФ " может быть неверным. Журнал не может быть перестроен, так как во время завершения работы базы данных были открыты транзакции/пользователи, не было контрольных точек или база данных была доступна только для чтения. Эта ошибка может возникнуть, если файл журнала транзакций был удален вручную или утерян из-за сбоя оборудования или среды.

Существует несколько возможных объяснений, в том числе и те, которые упомянуты в сообщении об ошибке. Возможно, он был извлечен из какого-нибудь инвалидного Сан-Франциско. тень, или отсоединенная только для чтения, или восстановленная после сбоя SQL Server или базовой системы, или поврежденная во время копирования/загрузки, или кто знает, что еще.

Вам нужно будет вернуться в службу поддержки Yaf или в службу поддержки их поставщика услуг, чтобы узнать, есть ли там правильные резервные копии доступны или, в противном случае, альтернативные копии файла mdf. Также имейте в виду, что никто из нас на самом деле не знает, что такое Yaf, и не имеет никакого способа проверить, о каком Yaf вы говорите. о.

В противном случае, похоже, вам не повезло, так как этот конкретный файл mdf недействителен и, таким образом, не приведет вас очень далеко.

Именно поэтому методы отсоединения / присоединения и/или копирования файлов на уровне O/S не являются очень полезными методами резервного копирования (или миграции, если на то пошло) для SQL Server. Вам нужен правильный план резервного копирования / восстановления, а это означает, что вы делаете правильные полные/дифференцированные/резервные копии журналов, соответствующие вашему допуску к потере данных. А отсоединение базы данных-это почти всегда плохая идея - когда что-то происходит с файлом mdf во время или после отсоединения, теперь у вас есть ноль копии вашей базы данных.

Есть несколько вещей, которые вы можете попробовать. Во-первых:

CREATE DATABASE Yafnet ON (NAME = 'Yafnet', FILENAME='*filepath*\Yafnet.mdf') FOR ATTACH;

Если это не сработает, попробуйте следующее:

Щелкните правой кнопкой мыши SSMS и запустите от имени администратора. Затем попробуйте прикрепить снова. Это должно решить проблему.

Comments

    Ничего не найдено.