За вашата първоначална ситуация изглежда, че сте опитали нещо подобно (или каквото GUI подготвя за вас, когато преминете през диалоговите прозорци):
CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH;
Този метод обаче изисква както mdf
файл и ldf
файл. В противен случай ще получите съобщение за грешка, подобно на:
Сега има начин да продължите, дори ако имате само mdf
файл. Ако приемем, че имате mdf
файл, който е правилно отделен от SQL Server, трябва да можете да прикачите mdf
файл без лог файл, използвайки следния синтаксис:
CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH_REBUILD_LOG;
Изглежда обаче, че във вашия случай файлът не е бил правилно отделен от SQL Server:
Има няколко възможни обяснения, включително споменатите в съобщението за грешка. Може би е бил извлечен от някаква невалидна SAN сянка, или е бил отделен, докато е само за четене, или е възстановен след срив на SQL Server или основната система, или е повреден по време на копиране/изтегляне, или кой знае какво още.
Ще трябва да се върнете към поддръжката на Yaf или поддръжката на техния доставчик на услуги, за да видите дали има подходящи резервни копия налични или, ако това не е възможно, алтернативни копия на mdf
файл. Също така имайте предвид, че никой от нас наистина не знае какво е Yaf или няма начин да провери за кой Yaf говорите.
В противен случай изглежда, че нямате късмет, тъй като този конкретен mdf
файлът е невалиден и следователно няма да ви отведе много далеч.
Точно поради тази причина подходите за отделяне/прикачване и/или копиране на файл на ниво O/S не са много полезни методи за архивиране (или миграция, в този смисъл) за SQL Server. Нуждаете се от подходящ план за архивиране/възстановяване, което означава да направите правилни резервни копия на пълен/диф/дневник, подходящи за вашата толерантност към загуба на данни. И отделянето на база данни е почти винаги по-долна идея - когато нещо се случи с mdf
файл по време или след отделянето, сега имате НУЛА копия на вашата база данни.