sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan vedhæfter man MDF uden logfil?

For din oprindelige situation ser det ud til, at du har prøvet noget som dette (eller hvad GUI'en forbereder for dig, når du går gennem dialogerne):

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

Denne metode kræver dog både en mdf fil og en ldf fil. Ellers får du en fejlmeddelelse, der ligner:

Nu er der en måde at fortsætte, selvom du kun har mdf fil. Forudsat at du har en mdf fil, der var korrekt adskilt fra SQL Server, bør du være i stand til at vedhæfte mdf fil uden en logfil ved hjælp af følgende syntaks:

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

Det ser dog ud til, at filen i dit tilfælde ikke var korrekt adskilt fra SQL Server:

Der er flere mulige forklaringer, herunder dem der er nævnt i fejlmeddelelsen. Måske blev den hentet fra en eller anden ugyldig SAN-skygge, eller løsnet, mens den kun er læse, eller gendannet efter SQL Server eller det underliggende system styrtede ned, eller beskadiget under kopiering/download, eller hvem ved hvad ellers.

Du skal gå tilbage til Yafs support eller deres serviceudbyders support for at se, om der er korrekte sikkerhedskopier tilgængelig eller, hvis det ikke er muligt, alternative kopier af mdf fil. Husk også, at ingen af ​​os rigtig ved, hvad Yaf er eller har nogen måde at bekræfte, hvilken Yaf du taler om.

Ellers ser det ud til, at du er uheldig, da netop denne mdf filen er ugyldig og vil derfor ikke bringe dig ret langt.

Det er netop grunden til, at tilgangen til filkopiering på O/S-niveau ikke er særlig nyttige metoder til backup (eller migrering, for den sags skyld) til SQL Server. Du har brug for en ordentlig backup/gendannelsesplan, hvilket betyder at tage ordentlige fuld/diff/log backups, der passer til din tolerance for tab af data. Og at frakoble en database er næsten altid en ringere idé - når der sker noget med mdf fil under eller efter frakoblingen, har du nu NUL kopier af din database.



  1. mysql GROUP_CONCAT DISTINCT flere kolonner

  2. Søg i alle felter i alle tabeller for en bestemt værdi (Oracle)

  3. Oracle - Med et en til mange-forhold skal du vælge forskellige rækker baseret på en min-værdi

  4. GROUP BY fjerner ikke dubletter