Datenbank mit Daten skripten

Frage:
Von der Struktur und den Daten einer Datenbank soll ein SQL-Skript erzeugt werden.

Lösung:
Microsoft stellt den Database Publishing Wizard zur Verfügung, mit dem SQL-Statements für Struktur und Daten von SQL Server 2000- und SQL Server 2005-Datenbanken in einer Skript-Datei gespeichert werden.
Weitere kostenpflichte und freie Tools gibt es auf Tibor Karaszi’s SQL Server pages.

/* übernommen aus der Original sqlfaq.de */

Wartungsplan sichert Transaktionsprotokoll nicht

Frage:
Mit dem Wartungsplan wurden Transaktionsprotokollsicherungen für verschiedene Datenbanken konfiguriert.
Die Transaktionsprotokollsicherung werden aber für einige der Datenbanken nicht ausgeführt, sondern fehlerhaft beendet.

Lösung:
Eigenständige Sicherungen des Transaktionsprotokolls sind nur möglich, wenn das Wiederherstellungsmodell der Datenbank auf Massenprotokolliert (Bulk-logged) oder vollständig (full) steht.
Beim Wiederherstellungsmodel einfach (simple) kann nur eine Vollsicherung der Datenbank ausgeführt werden. Dies trifft z.B. auf alle Systemdatenbanken (außer der model-Datenbank) zu. Um diese Datenbanken zu sichern, muß ein eigener Wartungsplan erstellt werden, der nur eine Vollsicherung, aber keine Transaktionsprotokollsicherungen ausführt.

Weitere Informationen im KB-Artikel 303229.

Vielen Dank für diesen Beitrag an Christa Kurschat.

/* übernommen aus der Original sqlfaq.de */

Transaktionsprotokoll wächst und wächst

Frage:
Das Transaktionprotokoll wird immer größer und der freie Plattenplatz immer geringer.

Lösung:
Es gibt verschiedene Vorgehensweisen, die wiederum abhängig vom Wiederherstellungsmodell sind:

1. Wiederherstellungsmodell steht auf einfach (simple).
Die im Log vorgehaltenen Informationen sind für eine Wiederherstellung nicht mehr relevant. Eine Sicherung ist nicht möglich.
Es kann mit DBCC SHRINKFILE (Name des Logfiles, Minimalgröße in MB) verkleinert werden.

2. Wiederherstellungsmodell steht auf vollständig oder massenprotokolliert
Das Log sollte regelmäßig gesichert werden. Abgeschlossene Transaktionen werden dabei aus dem Log entfernt und der Platz wieder zur Verfügung gestellt. Ist das Log bereits größer als notwendig, wird die physische Datei durch das regelmäßige Backup nicht verkleinert. Dazu muss wieder DBCC SHRINKFILE verwendet werden. Eine regelmäßige Logsicherung sorgt lediglich dafür, dass das Log sich nicht unnötig vergrößert.

Mehr Informationen im KB-Artikel 272318.

Eine Brachial-Methode wäre mit Backup Log With No_Log oder Backup Log With Truncate_Only. Danach sollte schnellstmöglich eine vollständige Datenbanksicherung ausführt werden. Näheres dazu in der Beschreibung zu Backup in der SQL Server Dokumentation.

Ein verkleinertes Log muß auch wieder wachsen. Und das geht auf Kosten der Performance.
Je nach Art des Wiederherstellungsmodells und der Datenbank-Größe sollte eine gewisse Loggröße gehalten werden.


Vielen Dank für diesen Beitrag an Christa Kurschat.

/* übernommen aus der Original sqlfaq.de */

Umgehen des Transaktionsprotokolls

Frage:
Kann das Transaktionsprotokoll komplett oder nur für bestimmte Datenoperationen ausgeschaltet bzw. umgangen werden?

Lösung:
Nein!
Es kann lediglich die Art der Wiederherstellung geändert werden. Diese Einstellung gilt für die Datenbank und somit für jede Datenoperation. Die Einstellung der Wiederherstellung ist unter den Datenbankeigenschaften in den Optionen zu finden. Es gibt die Einfache, Vollständige und Massenprotokollierte Wiederherstellung.
Die Einstellungen sind jedoch mit Vorsicht zu geniesen, da hier die Möglichkeiten der Wiederherstellung von Datensicherungen begrenzt werden. Nähers dazu in der Online Hilfe unter Verwenden von Wiederherstellungsmodellen.

/* übernommen aus der Original sqlfaq.de */

Automatische SQL-Skript-Erstellung

Frage:
Gerade im Entwicklungsstadium wird das Datenbank-Design noch oft geändert.
Wie kann der Vorgang der SQL-Skript-Erstellung über einen Auftrag automatisiert werden?

Lösung:
Die Skripterstellung im Enterprise Manager wird über das Tool scptxft.exe ausgeführt. Dieses Tool kann auch über die DOS-Ebene gestartet werden. Eine genaue Parameterauflistung erhält man mit scptxfr.exe /?.
Das Tool befindet sich im Unterverzeichnis UPGRADE der SQL Server Installation oder auf der SQL Server-CD.
Der Aufruf zur Skripterstellung kann nun per SQL Server Auftrag automatisiert werden. Dazu muss die Procedure xp_cmdshell mit folgender Syntax als Auftragsschritt in den SQL Server Auftrag eingebunden werden:
master..xp_cmdshell ’scptxfr.exe parameter‘, [no_output]

/* übernommen aus der Original sqlfaq.de */

Datenbank auf neuen Rechner übertragen

Frage:
Die Datenbanken eines SQL Servers sollen auf einen neuen Rechner übertragen werden.

Lösung:
Hier gibt es verschiedene Vorgehensweisen:

1.
Die Datenbanken auf dem alten Server per sp_detach_db datenbankname vom Server abhängen. Danach die Datenbanken auf den neuen Server kopieren und abschließend die Datenbank mit sp_attach_db datenbankname, mdf-pfad, ldf-pfad wieder anhängen.

2.
Für diese Variante muss bereits bei der Installation des SQL Servers auf dem neuen Server darauf geachtet werden, dass der Installationspfad und der Datenpfad identisch mit dem alten Server ist.
Für die eigentliche Ãœbertragung der Datenbanken sind der alte und neue SQL Server zu stoppen, damit die Datenbankdateien frei kopiert werden können. Das Zielverzeichnis auf dem neuen Server muss den gleichen Pfad haben, wie das Quellverzeichnis auf dem alten Server.
Es müssen alle Datenbankdateien inklusive der System-Datenbanken kopiert werden. Nach dem Kopieren können der alte und der neue SQL Server wieder gestartet werden.
Sofern die Server unterschiedliche Bezeichnungen haben, müssen die beiden Procedures sp_dropserver NameVomAltenServer und sp_addserver NameVomNeuenServer, local ausgeführt werden.
Und bei Windows-Authentifizierung müssen zusätzlich noch alle Accounts gelöscht und neu angelegt werden.

3. (nur bei SQL Server 2000)
Die Datenbank kann über das Kontextmenü der Datenbank mit dem Befehl Alle Tasks-> Offline Schalten abgehängt und auf dem neuen Server mit dem Kontextmenü von Datenbanken über Alle Aufgaben (oder Alle Tasks) -> Datenbank anhängen wieder angehängt werden.

/* übernommen aus der Original sqlfaq.de */

Weitergabe einer Datenbankstruktur

Frage:
Eine erstellte Datenbankstruktur soll auf einem anderen Rechner installiert werden.

Lösung:
Im Enterprise-Manager kann über das Kontextmenü der Datenbank aus dem Untermenü Alle Tasks per SQL-Skript generieren die Struktur der Datenbank als SQL-Skriptdatei erstellt werden.
Auf dem neuen Server muss die Datenbank lediglich angelegt und dort im Query Analyzer das Skript ausgeführt werden.

/* übernommen aus der Original sqlfaq.de */

Anwachsen des Transaktionsprotokolls

Frage:
Was muß beachtet werden, damit die Speicherkapazität des Transaktionsprotokolls immer ausreichend ist?

Lösung:
Am Protokoll sollte die Dateieigenschaft Datei automatisch vergrößern aktiviert sein.
Wichtig ist eine regelmäßige Sicherung des Transaktionsprotokolls. Dadurch werden alte abgeschlossene Transaktionen aus dem Protokoll gelöscht und verhindert, dass die physikalische Datei des Transaktionsprotokolls vergrößert wird.

/* übernommen aus der Original sqlfaq.de */