Thursday, April 19, 2007

Restore utav Microsoft SQL server 2000

Restore utav en SQL server kan vara lite knepigt. Här följer en instruktion som skall följas steg för steg. Restore kan göras till likvärdig filstruktur vilket är enklast eller till en helt olik filstruktur på en annan server vilket är lite mer kompext. Nedan följer först den enkla varianten sedan den till en annan filstruktur.
Första stegen är att installera upp en ny server med samma konfiguration, tex namn, nätverksinställningar och liknande. Observera att det är viktigt att diskar och partitioner blir likadant konfigurerat som på den servern man skall efterliknar annars kan det bli lite strul när man återläser systemdatabaserna för SQL. Djupare beskrivning utav detta kan läsas senare i dokumentet.



Återställning utav Operativsystemet och servern

Installation av Operativsystem inklusive uppdateringar på en helt ny server med likvärdig konfiguration, så som Tex att disk konfigurationen blir rätt.

Installation av MS SQL Server inklusive samma SupportPack nivå som innan. Collation mm kvittar då dessa inställningar finns i Master databasen som skall läsas in från backup senare.

När servern är installerad så skall SQL servern återställas så att SQL få sin ursprungliga konfiguration.

Återställning utav SQL servern

Tänk först på att stänga av övervakningsagenter och liknande innan man går vidare så att inte de håller på att starta SQL.

Backupdatat återläses från backupmedia till den nya servern till en lämplig katalog.

Börja med återläsning av Master databasen. Detta görs genom att starta SQL Servern i singleusermode. Stoppa först tjänsten och öppna sedan en kommandopromt.
Skriv Sqlservr.exe –c –m Välj sedan restore på Master databasen i EnterpriseManager alternativt i QueryAnalyzer. Fodras dock att man behärska Transact SQL kommandon. Peka ut sökvägen dit backupfilerna nu finns och genomför restoren. Databaserna hamnar nu på samma ställen som de ursprungligen fanns.

Efter restoren utav Master databasen så stängs SQL servern tjänsten av automatiskt. Starta upp den igen som vanligt och läs på övriga systemdatabaser på vanligt sätt.

Nu är servern installerad och konfigurerad som före systemkrashen. Nu kan datat för användadatabaserna läsas tillbaks.

Återläsning till annan filstruktur, flytt till ny server

För att återställa SQL server till en annorlunda filstruktur än ursprunget måste man göra enligt följande punkt för punkt lista. Det är viktigt att det görs exakt rätt. Här använder jag Queryanalyzern istället för Enterprise Manager.

Först starta man SQL via kommandopromten: sqlservr.exe -c –f
Nu är SQL igång och då ansluter man med Queryanalyzern till server. I den skriver man följande kommando för att restora. Observera att vi ändra sökvägarna till databasfilerna. Master restoras sen stoppas SQL automatiskt.

RESTORE DATABASE master FROM DISK='d:\sql\master.bcp' WITH
MOVE 'master' to 'c:\mssql\data\master.mdf',
MOVE 'mastlog' to 'c:\mssql\data\mastlog.ldf',
REPLACE
GO


Efter att master databasen är restorad så startas SQL från kommandopromten igen som innan fast med ett par andra parametra. Skriv följande: sqlservr.exe -c -f -T3608 -(T3607) -T4022
T3608 kommandot säger till SQL att starta utan någon annan databas vilket ger oss möjlighet att ändra Tempdb sökvägen. Informationen i Master databasen säger nu att den ligger på det gamla stället i filsystemet vilket vi måste ändra för att kunna starta upp SQL på ett riktigt sätt. För att ändra skriv följande i Queryanalyzern:

update sysdatabases SET filename = 'C:\MSSQL\Data\tempdb.mdf'
where name = 'tempdb'
GO


Även model databasens sökväg måste ändras annars kan vi inte fortsätta.

update sysdatabases SET filename = 'C:\MSSQL\Data\model.mdf'
where name = 'model'
GO


Sen måste den sökvägen till filerna i själva Tempdb ändras.

ALTER database tempdb MODIFY File (name = tempdev, Filename = 'c:\mssql\data\tempdb.mdf')
GO
ALTER database tempdb MODIFY File (name = templog, Filename = 'c:\mssql\data\templog.ldf')
GO


Nu kan man gå vidare med att göra restore utav de andra systemdatabaserna msdb och model. Stäng ner SQL och starta upp den normalt. Gör sedan restore i Quryanalyzern eller Enterprisemanager.

restore database msdb from disk = 'd:\sql\msdb.bcp'
with move 'msdbdata' to 'c:\mssql\data\msdbdata.mdf', move 'msdblog' to 'c:\mssql\data\msdblog.ldf', replace


Då är restoren klar. Om servern har fått ett nytt namn måste detta ändras. Eftersom man har restorat master databasen från ett annat system så står det gamla namnet kvar i vissa systemtabeller. Detta ändras med följande kommandon i Queryanalyzern:

exec sp_dropserver 'old name'
exec sp_addserver 'new name', 'local'


Nu är SQL Servern helt återställd och kan användas igen.

Frågetecken kring SQL Jobb

I samband med namnbyte på servern kan man få problem med att jobben inte går att editera efteråt. Detta beror på att det i tabellen sysjobs och columnen originating_server i MSDB databasen står det gamla servernamnet. Ändera detta till rätt servernamn.

UPDATE SYSJOBS SET ORIGINATE_SERVER = 'namnet'

Även i sysjobssteps tabellen och columnen server kan fel finnas. Bör vara NULL eller servernamnet men det nya namnet.

No comments: