Korrupt database? Attach uten log-fil? 

Jeg får ofte henvendelser fra DBA’er med “korrupte” databaser hengende i modus “Restoring”, selv om de mener at de ikke har utført en restore. Ofte er logfilen ødelagt eller fjernet. Les løsningene under, så vet du at det finnes håp hvis du ender opp i en slik situasjon.
1. Den mest naturlige årsaken er at du gjør en restore eller ikke fullførte din forrige restore riktig
Løsning:
Fullfør restore av log-backups eller kjør RESTORE DATABASE WITH RECOVERY for å få database online. Alternativt, gjør en restore på nytt.
2. Hvis du mangler backup og log-filen, og mener at databasen ble lukket på forsvarlig måte, så kan du attache en mdf-fil (data) uten å ha ldf-filen (log)
Løsning:
CREATE DATABASE TestDb ON (FILENAME = N’E:\FilenDin.mdf’) FOR ATTACH_REBUILD_LOG
3. Hvis du mangler backup og databasen er korrupt pga “servercrash” gjerne kombinert med “tomt for diskplass”
Løsning:
–Fjern den gamle databasen din
–Lag en database som så lik som de gamle som mulig både med tanke på navn og størrelser
CREATE DATABASE [Databasen]
ON PRIMARY
( NAME = [Databasen]_Data,
FILENAME = N’E:\[Databasen].mdf’,
SIZE = 2048, MAXSIZE = 2048,
FILEGROWTH = 10% )
LOG ON
( NAME = [Databasen]_Log,
FILENAME = N’E:\[Databasen].ldf’,
SIZE = 2048, MAXSIZE = 2048,
FILEGROWTH = 1MB ) ;
GO
ALTER DATABASE [Databasen] SET EMERGENCY
–(Dette er det samme “UPDATE SET = -32768″ som ble brukt før 2008)
ALTER DATABASE [Databasen] SET SINGLE_USER
–Her “kan” du miste data
DBCC CHECKDB ([Databasen], REPAIR_ALLOW_DATA_LOSS)
–Kjør samme igjen
DBCC CHECKDB ([Databasen], REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE [Databasen] SET MULTI_USER
ALTER DATABASE [Databasen] SET ONLINE
–ENJOY!
Kommentarer
Legg inn din kommentar til innlegget:
