Zum Hauptinhalt springen.

Raunzen und Rauschen

Verschieben von Datenbankdateien bei einem MSSQL Server

Eingestellt am 09. August 2009 um 20:47 Uhr » Altes Am Rechner

Vor kurzem stand die Aufgabe vor mir, die Dateien, in denen die Daten einer MS SQL-Datenbank liegen, auf ein Wechsellaufwerk zu transferieren. Damit sollte ermöglicht werden, mit dem gleichen Datenbestand an verschiendenen Rechnern arbeiten zu können, ohne einen SQL-Server ins Netz zu bringen, den man von verschiedenen Orten aus erreichen kann.

Der Datenbankserver (SQL Server 2005 Express Edition) wurde von einem Programminstallationspaket mitgeliefert und automatisch auf dem selben Rechner installiert, auf dem auch das Programm läuft.

Ein Programm greift nicht direkt auf in einer Datenbank gelagerte Datenbestände zu, sondern überträgt diese Aufgabe dem Datenbankserver, der sie nach einer Anfrage ausführt und eventuell dabei ermittelte Datensätze an das Programm zurücküberträgt. Wir brauchen uns also nur mit dem Server auseinanderzusetzen.

Zutatenliste

Wir benutzen folgendes:

  • SQL Server Management Studio Express (wurde bei der fraglichen Installation nicht mitgeliefert).
  • Die Beschreibung des Vorgangs auf den Dokumentationsseiten von Microsoft.
  • Benutzername und Passwort, mit denen sich das Programm beim Datenbankserver anmeldet.
  • Der Name der Datenbank, deren Dateien wir verschieben wollen.
  • Eventuell einen Texteditor zum zwischenlagern diverser Informationen.

Vorgehen

Nachdem das SQL Server Management Studio Express gestartet wurde, kann man eine Liste der Datenbanken einsehen. Dazu gehören die Systemdatenbanken und die Nutzerdatenbanken. Unter den Nutzerdatenbanken suchen wir diejenige, deren Dateien wir auf ein anderes Laufwerk verbringen wollen. Mit einem Rechtsklick auf den Namen der Datenbank erreichen wir über das Kontextmenü die Eigenschaften der Datenbank.

Unter dem Menüpunkt Dateien finden wir die Angaben, die wir zum Auffinden und Verschieben der Dateien benötigen. Dazu gehören der physikalische Pfad zu den Dateien, die Dateinamen selbst und deren logische Namen. Die logischen Namen kopieren wir in den Texteditor.

Wir kopieren nun die angegebenen Dateien an den neuen Speicherort. Den neuen Pfad samt Dateinamen notieren wir uns nun ebenfalls im Texteditor. Danach folgen wir den Angaben auf den Dokumentationsseiten von Microsoft.

Nehmen wir an, die Dateien dbdateiname.mdf und dbdateiname_log.ldf, deren logische Namen bis auf die Dateiendung gleichlautend sind, sollen nach F:\\Pfad\\zur\\Datenbank\\ verschoben werden. Dorthin kopiert haben wir sie schon, jetzt werden die Einstellungen des DB-Servers angepasst.

Im SQL Server Management Studio Express gibt es oben links einen Button namens Neue Abfrage, der ein Editorfenster innerhalb der Programmoberfläche öffnet. Dort werden wir die Abfragequeries eintragen. in der Funktionsleiste, in der sich auch der Button für Neue Abfrage befindet, gibt es auch den Button Abfrage ausführen. Mehr als diese beiden brauchen wir nicht.

Als erstes wird die zu verschiebende Datenbank Offline genommen. Dazu wird folgender SQL-Query benutzt.

ALTER DATABASE datenbankname SET OFFLINE

Query in das Editorfeld eintragen und den Query ausführen. Unter dem Editorfeld gibt es einen Bereich mit Tabs, deren einer Meldungen heißt. Dort sollte sich die Nachricht finden, dass die Datenbank jetzt abgeschaltet ist.

Wir teilen dem Datenbankserver nun mit, welchen Datenbankdateien wir einen neuen Speicherort zuweisen. Auch das geschieht mit SQL-Queries, jeweils einer für jede zu verschiebende Datei.

ALTER DATABASE datenbankname MODIFY FILE ( NAME = dbdateiname, FILENAME = 'F:\\Pfad\\zur\\Datenbank\\dbdateiname.mdf' )

… und …
ALTER DATABASE datenbankname MODIFY FILE ( NAME = dbdateiname_log, FILENAME = 'F:\\Pfad\\zur\\Datenbank\\dbdateiname_log.ldf' )

… ergeben nach ihrer Ausführung jeweils die Meldung, dass der Speicherort geändert wurde und beim nächsten Start der Datenbank dieser neue Speicherort verwendet wird. Sind alle Pfade geändert, wird die Datenbank neu gestartet.

ALTER DATABASE datenbankname SET ONLINE

Query eintragen und ausführen. Der Datenbankserver teilt nun mit, ob diese Operation von Erfolg gekrönt war. Ist, aus welchen Gründen auch immer, das neue Verzeichnis beispielsweise schreibgeschützt oder gar nicht vorhanden, scheitert das Starten der Datenbank und es hagelt entsprechende Fehlermeldungen und die Datenbank bleibt offline. Wurde die Datenbank online geschaltet, können wir im Reiter Dateien im Eigenschaftenfenster der Datenbank prüfen, in welchem Pfad die zur Datenbank gehörenden Dateien zu finden sind.

Stimmt nun alles, sind wir, bis auf das Löschen der Dateien am alten Speicherort, durch.


Kommentare

Die Kommentare sind für diesen Eintrag geschlossen.