Home SQL Server SQL 2005 Administration Datenbank teilweise offlline
Datenbank teilweise offlline PDF Drucken E-Mail
Benutzerbewertung: / 0
SchwachPerfekt 
SQL Server - SQL 2005 Administration
Geschrieben von: Fumus   
Donnerstag, 29. Mai 2008 um 21:02

Seit SQL 2005 ist eine Datenbank bereits dann online, wenn die Primary Dateigruppe intakt ist. Was aber passiert, wenn eine der zusätzlich erstellten Dateigruppen defekt ist? Lösung gesucht...

 

In der Praxis werden bei sehr grossen Datenbanken oftmals Dateigruppen erstellt, um eine physikalische Verteilung Daten/Tabellen zu erreichen. Beispielsweise konnte man Stammdaten auf HDD 1 legen, während die Bewegungsdaten auf HDD 2 lagen. Dafür war es notwendig Tabellen auf die dementsprechnenden Dateigruppen zu anzulegen. Jedoch steht unter SQL Server 2000 eine DB nicht zur Verfügung, wenn eine der Dateigruppen defekt ist.


-- Hinzufügen der Dateigruppe Stamm
ALTER DATABASE MeineDB ADD FILEGROUP [Stamm] 
GO
ALTER Databse MeineDB
ADD FILE
( NAME = N'Stammdaten'FILENAME = N'E:\DATA\SQLDB\Stammdaten.ndf',
SIZE = 3072KB , FILEGROWTH = 1024KB ) TO FILEGROUP [Stamm]
GO


-- Anlegen der Tabelle auf Dateigruppe Stamm
create table kunden
   (kdid int ....) on
STAMM

Nun ist aber diese Dateigruppe, sprich die Datei "stammdaten.ndf" defekt. Startet der SQL Server, steht die DB zunächst nicht zur Verfügung. Dieser Umstand ist aber unter SQL Server 2005 wie folgt zu beheben.

--defekte/fehlende Datei offline setzen  und anschliessend die Datenbank wieder online schalten

alter database meineDB
modify file (name = N'Stammdaten', OFFLINE)
go
alter database meineDB
set online

Somit steht die Datenbank komplett zur Verfügung. Lediglich die betroffenden Tabellen der fehlenden Datei stehen nicht zur Verfügung.

Der "Trick" kann sogar noch ausgebaut werden. Falls für große Tabellen eine Partitionierung (horizontales Splitten einer Tabelle auf mehrere Dateigruppen) vorgenommen worden ist, würde sogar eine Tabelle teilweise zur Verfügung gestellt werden können.

Bsp: Tabelle Umsatz...

besteht aus 3 Dateigruppen: Umsatz2003, Umsatz2004 und Umsatz2005.
Die Dateigruppe für Umsatz2004 steht nicht zur Verfügung und wurde offline gesetzt.

Als Ergebnis für select * from Umsatz erhalten wir dennoch Werte. Sogar update und Insert funktionieren tadellos bei den vorhanden Werten.

--> Tab: Umsatz
Summe      | Kunden       | Jahr 
---------------------------------
123             12         2003   -- Dategruppe Umsatz2003
234             33         2003   --  Dategruppe Umsatz2003
431             99         2005   -- Dategruppe Umsatz2005
234             112      2005   -- Dategruppe Umsatz2005

(Zum Thema: "Wie partitioniere ich Tabelle horiontal" wird hier demnächst ein eigener Artikel erscheinen.)

Für den Restore der DB ist es allerdings von Nöten eine Sicherung der Dateigruppen zu haben und sowie eine aktuelle Sicherung des Transaktionsprotokolls.


Viel Spaß damit ;-)

 
SEO by Artio