Änderungen

Wechseln zu: Navigation, Suche

MSSQL 2005 Restore System Databases

6.187 Byte hinzugefügt, 10:42, 21. Jul. 2015
Die Seite wurde neu angelegt: „=== Vorraussetzungen === Für eine Wiederherstellung der master DB muss die Version der SQL Server Instanz inkl. Service Pack(SP) und Kumulativem Update (CU)…“
=== Vorraussetzungen ===

Für eine Wiederherstellung der master DB muss die Version der SQL Server Instanz inkl. Service Pack(SP) und Kumulativem Update (CU) genau gleich sein. Ansonsten bricht der Restore mit einem Fehler ab.

== Wiederherstellen der master DB ==

Unter dem SQL Configuration Tool bei den Start Parametern die Option '''-m''' hinzufügen und den Dienst neu starten. Damit wird der [[SQL Server]] im Single Modus gestartet, d.h. er akzeptiert ab jetzt nur noch genau eine Verbindung.

Jetzt kann entweder mit dem Management Studio oder einem anderen Tool der Restore durchgeführt werden. Bei dem Management Studio beachtet aber bitte, dass jedes Query Fenster einen eigenen Connect hat, d.h. wenn einer Verbindung im Serverbereich bereits existiert, kann das Query Fenster keine Verbindung mehr aufmachen -> also bitte nur genau ein Query Fenster verwenden.


=== Restore Master ===

<source lang="tsql">
RESTORE DATABASE master FROM DISK = 'e:\IrgendEinBackupDir\master_1_Full.bak' WITH REPLACE;
</source>

Damit wird die bestehende master DB überschrieben. Nach dem erfolgreichem Restore wird der SQL Server automatisch neu gestartet

'''Achtung''': Danach müssen die Pfade für alle anderen DB's nicht mehr passen.

Soll die Master DB verschoben werden, kann sie, wenn die Instanz gestoppt ist, einfach an die neue Stelle kopiert werden. Die neuen Pfade müssen aber vor dem Start der Instanz im SQL Configuration Manager in den Start Parametern angepasst werden.

== mssqlsystemresource ==

Eine sehr wichtige Datenbank, die in keiner Sicherung aktiv mit auftaucht, da die Datenbank ein reine Read-Only interne Verbindung zum SQL Server hat und nie direkt angesprochen wird. Dort befinden sich alle Verwaltungsskripte/Views/...

Diese Datenbank kann einfach kopiert werden. Wichtig ist hier nur wieder, dass die Versionsnummer des SQL Servers genau passen muss, also genau wie bei der master. Falls diese DB mal weg ist, kann sie von einem anderen Server einfach kopiert werden. Sie wird nur durch ein Upgrade der Instanz verändert. Die Instanz selber schreibt nie in diese Datenbank.

=== Restore der mssqlsystemresource ===

# Stoppen der SQL Server Instanz
# Kopiere die mssqlsystemresource an die Position, an der sie sich in Zukunft befinden soll.

Falls das jetzt eine andere Stelle ist, als die, an der sich die Dateien jetzt gerade befinden:

# Setzten der Start Parameter im SQL Server -f;-T3608
# Server mit den neuen Parametern starten.
# Eintrag in der master DB anpassen, wo die mssqlsystemresource zu finden ist.
<source lang="tsql">
ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=data, FILENAME= 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mssqlsystemresource.mdf');
GO
ALTER DATABASE mssqlsystemresource MODIFY FILE (NAME=log, FILENAME='C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\mssqlsystemresource.ldf');
GO
ALTER DATABASE mssqlsystemresource SET READ_ONLY;
GO
</source>

Falls jetzt nch die msdb und/oder die model neu erzeugt werden sollen oder die tempdb verschoben werden soll, einfach die Startparameter -f;-T3608 weiter eingetragen lassen.

Ansonsten diese wieder entfernen und den Server durchstarten.

== msdb und model ==

Wenn der Server nach einem Restore der msdb und/oder model nicht startet oder diese beim Start nicht gefunden werden, sind sie wahrscheinlich mit einem falschen Pfad in der master DB registriert. Mit den Startparametern -f;-T3608 wird verhindert, dass der Server bei einem Fehlen dieser Datenbanken mit einem Fehler abbricht.

Also den Server einmal durchstarten und dann mittels ALTER DATABASE den neuen Ort der DB Dateien angeben:

<source lang="tsql">
ALTER DATABASE model MODIFY FILE (NAME=modeldev, FILENAME= 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\model.mdf');
GO
ALTER DATABASE model MODIFY FILE (NAME=modellog, FILENAME='C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\modellog.ldf');
GO
ALTER DATABASE msdb MODIFY FILE (NAME=MSDBdata, FILENAME= 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\msdbdata.mdf');
GO
ALTER DATABASE msdb MODIFY FILE (NAME=MSDBlog, FILENAME='C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data\msdblog.ldf');
GO
</source>

Jetzt wieder die Startparameter entfernen und kontrollieren, ob der Server jetzt korrekt startet.

=== Restore ===

Falls die DB Dateien noch gar nicht existieren kann jetzt an die neue Position auch ein Restore der beiden DBs gemacht werden.

<source lang="tsql">
RESTORE DATABASE msdb FROM DISK = 'e:\BackupDir\msdb_1_Full.bak' WITH REPLACE;

-- Und als Beispiel ein Fullbackup aus zwei Disks:
RESTORE DATABASE model FROM DISK = 'e:\BackupDir\model_1_Full.bak' , DISK = 'e:\tmp\model_2_Full.bak'
WITH REPLACE;
</source>

== tempdb ==

Der Server braucht für einen erfolgreichen Start auch eine tempdb, die automatisch aus der model db erzeugt wird, falls diese nicht gefunden wird. Das ganze setzt natürlich voraus, dass der Pfad, wo die Dateien angelegt werden sollen, überhaupt existiert.

Ggf. also wieder mit den Startparametern -f;-T3608 den Server durchstarten und die tempdb Files an der neuen Stelle in der master db registrieren.

=== Welche tempdb Files müssen alle verschoben werden? ===

Da ich meine tempdb files immer mit temp anfange zu benenne, bekomme ich mit der folgenden Query raus, welche tempdb Files alle verschoben werden müssen:

<source lang="tsql">
select * from sys.master_files where name like 'temp%'
</source>

=== Verschieben der tempdb ===

<source lang="tsql">
ALTER DATABASE tempdb MODIFY FILE (NAME=tempdev, FILENAME= 'D:\MSSQL\DATA\tempdb.mdf');
GO
ALTER DATABASE tempdb MODIFY FILE (NAME=tempdev2, FILENAME= 'D:\MSSQL\DATA\tempdb2.mdf');
GO
ALTER DATABASE tempdb MODIFY FILE (NAME=templog, FILENAME='D:\MSSQL\TRAN\tempdb.ldf');
GO
</source>
*/

== Weitere Probleme ==

Falls der Server ganz neu aufgesetzt wurde, wird wahrscheinlich der auch der Service Master Key fehlen. Dieser sollte hoffentlich aus einer Sicherung, die direkt nach der Installation des SQL Servers gemacht wurde, wiederhergestellt werden.

[[MSSQL Backup Restore Service Master Key (SMK)|Backup Restore Service Master Key]]
175
Bearbeitungen