sql >> Databasteknik >  >> RDS >> Sqlserver

Hur bifogar man MDF utan loggfil?

För din initiala situation verkar det som om du försökte något liknande detta (eller vad GUI förbereder för dig när du går igenom dialogerna):

CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH;

Den här metoden kräver dock både en mdf fil och en ldf fil. Annars får du ett felmeddelande som liknar:

Nu finns det ett sätt att gå vidare även om du bara har mdf fil. Förutsatt att du har en mdf fil som var korrekt lossad från SQL Server, bör du kunna bifoga mdf fil utan en loggfil med följande syntax:

CREATE DATABASE YAFnet ON (FILENAME = N'C:\sql_data\YAFnet.mdf')
FOR ATTACH_REBUILD_LOG;

Det verkar dock som om filen i ditt fall inte var korrekt lossad från SQL Server:

Det finns flera möjliga förklaringar, inklusive de som nämns i felmeddelandet. Kanske har den hämtats från någon ogiltig SAN-skugga, eller kopplats bort medan den endast är läsbar, eller återställdes efter att SQL Server eller det underliggande systemet kraschade, eller skadades under kopiering/nedladdning, eller vem vet vad mer.

Du måste gå tillbaka till Yafs support, eller deras tjänsteleverantörs support, för att se om det finns korrekta säkerhetskopior tillgängligt eller, i annat fall, alternativa kopior av mdf fil. Tänk också på att ingen av oss riktigt vet vad Yaf är eller har något sätt att verifiera vilken Yaf du pratar om.

Annars verkar det som om du har tur, eftersom just denna mdf filen är ogiltig och kommer därför inte att ta dig särskilt långt.

Det är just därför som metoderna för att koppla bort / bifoga och/eller kopiera filer på O/S-nivå inte är särskilt användbara metoder för säkerhetskopiering (eller migrering, för den delen) för SQL Server. Du behöver en ordentlig backup/återställningsplan, vilket innebär att du tar ordentliga fullständiga/diff/logg-säkerhetskopior som är lämpliga för din tolerans för dataförlust. Och att koppla bort en databas är nästan alltid en underlägsen idé - när något händer med mdf fil under eller efter lossningen har du nu NOLL kopior av din databas.



  1. Hur man skapar en databasdriven navigeringsmeny på flera nivåer med Laravel

  2. Hur man returnerar oracle-utgångsparametrar från en lagrad procedur i .NET

  3. JSON_OBJECTAGG() Funktion i Oracle

  4. När jag väl har aktiverat modeller i django, varför kan jag inte fråga dem direkt i postgresql pgAdmin UI?