Ответ 1
Для вашей начальной ситуации кажется, что вы пробовали что-то вроде этого (или независимо от того, что GUI готовит для вас, когда вы проходите через диалоги):
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.ldf". Ошибка операционной системы 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.ldf" может быть неверным. Журнал не может быть перестроен, поскольку открытые транзакции/пользователи были открыты, когда база данных была отключена, контрольная точка не была создана в базе данных или база данных была доступна только для чтения. Эта ошибка может возникнуть, если файл журнала транзакций был удален или потерян вручную из-за сбоя оборудования или среды.
Существует несколько возможных объяснений, в том числе упомянутых в сообщении об ошибке. Возможно, он был извлечен из некоторой недействительной тени SAN или отключен во время чтения или восстановлен после сбоя SQL Server или базовой системы или поврежден во время копирования/загрузки или кто знает, что еще.
Вам нужно будет вернуться к поддержке Yaf или к поддержке своего поставщика услуг, чтобы узнать, имеются ли надлежащие резервные копии или, если это не так, альтернативные копии файла mdf
. Также имейте в виду, что никто из нас не знает, что такое Яф, или имеет какой-либо способ проверить, о каком Яфе вы говорите.
В противном случае вам кажется, что вам не повезло, поскольку этот конкретный файл mdf
недействителен и, следовательно, не будет очень далеко.
Именно поэтому подходы к копированию файлов уровня detach/attach и/или O/S являются не очень полезными методами резервного копирования (или миграции, если на то пошло) для SQL Server. Вам нужен правильный план резервного копирования/восстановления, что означает наличие правильных резервных копий /diff/log, подходящих для вашего допуска к потере данных. И отключение базы данных почти всегда уступает идее - когда что-то происходит с файлом mdf
во время или после отсоединения, теперь у вас есть ZERO копии вашей базы данных.