Microsoft SQL Server 2000 Administration SQL2000A 00-0-03-72-64 Autor: G. Hölbling 1. Auflage: März 2001 (120301) by HERDT-Verlag, Nackenheim (Germany) Internet: www.herdt.com Alle Rechte vorbehalten. Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Microfilm oder einem anderen Verfahren) ohne schriftliche Genehmigung des Herausgebers reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden. Diese Unterlage wurde mit großer Sorgfalt erstellt und geprüft. Trotzdem können Fehler nicht vollkommen ausgeschlossen werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische Verantwortung noch irgendeine Haftung übernehmen. Diese Unterlage ist auf chlorfrei gebleichtem Papier gedruckt. INHALTSVERZEICHNIS 1 Einsatzgebiete und Voraussetzungen......... 4 1.1 1.2 1.3 Verwendungsfelder...........................................4 Hardware und Software ....................................5 Vorausgesetzte Kenntnisse ..............................6 SQL Server 2000 - Administration 5.2 5.2.1 5.2.2 5.3 Physischer Aufbau des Systems ......................9 Einrichtung und Pflege der Software ..............10 Login- und Benutzerverwaltung ......................12 Backup- und Restore-Prozeduren ..................12 Systemüberwachung und System-Tuning ......13 Wissens-Check ..............................................14 3 Architektur und Systemkomponenten ...... 16 3.1 3.1.4 3.1.5 MSSQLServer........................................19 Server-Agent..........................................20 Search-Dienst ........................................20 Distributed-Transaction-CoordinatorDienst ....................................................20 SQL-Server-Dienst-Manager..................20 SQL-Server-Enterprise-Manager............21 SQL Server Query Analyzer ...................24 Weitere grafische Werkzeuge ................24 Assistenten ............................................25 Befehlszeilenwerkzeuge.........................26 4.1 Vorbereitungen ...............................................30 4.1.1 4.1.2 4.1.3 4.1.4 4.2 4.3 Hardware-Check ....................................30 Check der Netzwerkumgebung ..............31 Systemstabilität checken........................32 Vorbereiten des Betriebssystems ...........32 Überprüfen der Ordnerstruktur ...............36 Überprüfen der Programmgruppe...........36 Server-Dienste starten ...........................37 Client-Zugriff testen................................37 Überprüfen der Konfiguration .................37 Wissens-Check ..............................................38 5 Objektverwaltung ........................................ 40 5.1 Logische Datenbankobjekte ...........................40 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 Bezeichner.............................................40 Datenbank .............................................41 Tabellen .................................................43 Index......................................................44 Sichten...................................................46 Dateigruppen .........................................47 Das Sicherheitskonzept von SQL Server 2000............................................54 6.2.2 6.2.3 6.3 6.3.3 6.3.4 Zuordnen von Datenbankrollen.............. 62 Verwalten von Anweisungsberechtigungen...................................... 63 Verwalten von Objektberechtigungen .... 64 Erstellen benutzerdefinierter Datenbankrollen .................................... 64 Praxisgerechte Sicherheitsstrategien .............65 6.4.1 6.4.2 6.4.3 6.4.4 6.5 Festlegen des globalen Sicherheitsmodus .................................. 58 Erstellen eines Login-Kontos ................. 59 Verwalten der Login-Konten................... 60 Benutzerkonten und Rollen ............................62 6.3.1 6.3.2 6.4 Login- oder Anmeldekonto..................... 54 Sicherheitsmodi von SQL Server 2000 .. 55 Spezielle Login-Konten .......................... 56 Erteilen von Berechtigungen .................. 56 Login-Konten erstellen und verwalten ............58 6.2.1 Auswahl des Sicherheitsmodus ............. 65 Datenbankrolle public und Benutzerkonto guest.............................. 65 Das Benutzerkonto sa ........................... 66 Entwerfen des Sicherheitsmodells ......... 66 Wissens-Check ..............................................67 7 Eine Benutzerdatenbank erstellen .............68 7.1 Grundkonzept einer relationalen Datenbank......................................................68 7.1.1 7.1.2 7.1.3 7.1.4 Das Setup Schritt für Schritt ...........................33 Installationskontrolle und Konfiguration ..........36 4.3.1 4.3.2 4.3.3 4.3.4 4.3.5 4.4 6.2 Transact-SQL .................................................26 Wissens-Check ..............................................28 4 Installation und Konfiguration ................... 30 Wissens-Check ..............................................53 6.1.1 6.1.2 6.1.3 6.1.4 Werkzeuge und Assistenten ...........................20 3.3.1 3.3.2 3.3.3 3.3.4 3.3.5 3.3.6 3.4 3.5 6.1 Server-Dienste ...............................................19 3.2.1 3.2.2 3.2.3 3.2.4 3.3 Tier- oder Schicht-Modelle .....................16 2-Tier auf verteilten Rechnern ................16 3-Tier oder Mehr-Tier auf verteilten Rechnern ...............................................17 2-Tier auf einem Rechner.......................18 Vorteile der Client-Server-Architektur .....18 Die Systemdatenbank master ................ 50 Die Systemdatenbank model ................. 51 Die Systemdatenbank msdb .................. 52 Die Systemdatenbank tempdb ............... 52 Dateien der Systemdatenbanken ........... 52 6 Login-Verwaltung und Erteilung von Rechten .........................................................54 Client-Server-Architektur ................................16 3.1.1 3.1.2 3.1.3 3.2 5.4 Dateien .................................................. 48 Seiten und Blöcke.................................. 49 Systemdatenbanken.......................................49 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 2 Berufsbild "Datenbankadministrator"......... 8 2.1 2.2 2.3 2.4 2.5 2.6 Physische Datenbankobjekte .........................48 7.2 7.3 Einrichten einer Benutzerdatenbank...............73 Erstellen von Tabellen....................................76 7.3.1 7.3.2 7.4 7.5 7.6 Daten und Datenbank............................ 68 Relationale Datenbanken....................... 69 Datennormalisierung.............................. 70 Beziehungen.......................................... 72 Planen der Tabellenstruktur................... 76 Die Tabelle erzeugen............................. 77 Beziehungen zwischen Tabellen ....................77 Übung ............................................................79 Wissens-Check ..............................................80 8 Mit einer Benutzerdatenbank arbeiten .......82 8.1 8.2 8.3 8.4 8.5 Daten eingeben, bearbeiten, löschen .............82 Filtern nach Kriterien ......................................83 Erstellen von Sichten......................................86 Übung ............................................................88 Wissens-Check ..............................................88 I Inhaltsverzeichnis 9 Daten sichern (Backup) .............................. 90 9.1 Sicherungsmethoden und Sicherungsmedien ........................................................... 90 9.1.1 9.1.2 9.1.3 9.2 Vollständige Datenbanksicherung .......... 96 Differenzialsicherung ............................. 96 Sicherung des Transaktionsprotokolls.... 97 Differenzialsicherung und Sicherung des Transaktionsprotokolls .................... 98 Sicherung erstellen ........................................ 99 9.3.1 9.3.2 9.3.3 9.4 Backup-Methoden.................................. 90 Sicherungsmedien ................................. 93 Vorkehrungen im laufenden Betrieb ....... 93 Das Sicherungskonzept ................................. 95 9.2.1 9.2.2 9.2.3 9.2.4 9.3 Backup mit dem Sicherungsassistenten ............................................ 99 Erstellen und Verwalten benannter Sicherungsmedien ............................... 102 Automatische Sicherung ...................... 104 Wissens-Check ............................................ 105 10 Daten wiederherstellen (Restore) ............ 106 10.1 10.2 10.3 10.4 13.2 Automatische Wiederherstellung.................. 106 Wiederherstellungsverfahren für Benutzerdatenbanken .................................. 107 Systemdatenbanken wiederherstellen.......... 110 Wissens-Check ............................................ 111 13.2.1 Auftragserstellung mit dem Assistenten...........................................135 13.2.2 Aufträge bearbeiten ..............................137 13.2.3 Der Auftragsverlauf...............................139 13.3 13.4 11.4 14.1 14.2 14.3 14.4 14.5 12.1 Leistung einer Datenbank ............................ 120 12.1.1 Leistungsparameter (Output) ............... 120 12.1.2 Faktoren des Leistungsverhaltens (Input)................................. 121 12.2 15.1 12.3 SQL Profiler ......................................... 124 Systemmonitor..................................... 128 SQL Server Query Analyzer................. 128 Aktuelle Aktivität .................................. 129 Abfragekontrolle................................... 130 Wissens-Check ............................................ 131 Komponenten und Typen der Replikation .... 155 15.1.1 15.1.2 15.1.3 15.1.4 15.2 Verleger, Abonnent, Verteiler ...............155 Push- und Pull-Abonnements ...............156 Publikationen und Artikel ......................157 Replikationstypen .................................158 Einrichten und Durchführen einer Replikation ................................................... 159 15.2.1 Die Replikationsagenten.......................159 15.2.2 Vorbereitungen für die Replikation........160 15.2.3 Verteiler, Verleger, Abonnenten einrichten..............................................160 15.2.4 Erstellen einer Publikation ....................162 15.2.5 Einrichten von Abonnements ................165 15.2.6 Verwalten der Replikationen.................166 15.3 Szenarios für Replikationen ......................... 167 15.3.1 Szenario A: Ein Verleger, mehrere Abonnenten..........................................167 15.3.2 Szenario B: Ein Abonnent, mehrere Verleger .................................168 15.4 15.5 Verteilte Datenbanken zur Echtzeit .............. 168 Wissens-Check............................................ 170 16 Publizieren im World Wide Web .............. 172 16.1 Datenbanken im Internet.............................. 172 16.1.1 Statische HTML-Seiten.........................172 16.1.2 Dynamische HTML-Seiten....................173 16.1.3 Sicherheitsaspekte ...............................174 Werkzeuge zur Überwachung der Performance ................................................ 123 12.2.1 12.2.2 12.2.3 12.2.4 12.2.5 Die Data Transformation Services (DTS)..... 147 Arbeiten mit dem DTS-Assistenten .............. 148 Massendatentransfer mit bcp....................... 151 Übung .......................................................... 152 Wissens-Check............................................ 152 15 Datenbanken verteilen (Replikation) ....... 154 Wissens-Check ............................................ 118 12 Geschwindigkeit und Stabilität (Performance) ............................................ 120 Wissens-Check............................................ 144 14 Import und Export von Daten................... 146 Fehlerquellen im System.............................. 112 Die Fehlermeldungen von SQL Server......... 113 Gezielte Fehlerbehandlung .......................... 115 11.3.1 Fehlermeldungen im Team auswerten ............................................ 115 11.3.2 Fehlerprotokolle einsetzen ................... 115 11.3.3 Die DBCC-Anweisung (DataBase Consistency Checker).......................... 117 11.3.4 Die Online-Dokumentation ................... 118 Warnmeldungen erzeugen........................... 140 13.3.1 Definieren von Operatoren ...................141 13.3.2 Bearbeiten bestehender Operatoren.....142 13.3.3 Der Warnungserstellungsassistent .......142 11 Fehlerbehandlung ..................................... 112 11.1 11.2 11.3 Auftragserstellung und Auftragsverwaltung ................................................... 135 16.2 16.3 16.4 Der Web-Assistent ....................................... 174 Active Server Pages (ASP) .......................... 179 Wissens-Check............................................ 181 17 Wissens-Check: Antworten...................... 182 Anhang 1: Web-Adressen.............................. 194 13 Verwaltungsaufgaben automatisieren .... 132 13.1 Dienste und Werkzeuge zur Automatisierung ........................................... 133 13.1.1 SQL Server Agent................................ 133 13.1.2 Werkzeuge zur Automatisierung .......... 133 Anhang 2: Glossar.......................................... 196 Stichwortverzeichnis...................................... 200 5 SQL Server 2000 - Administration 5 Objektverwaltung In diesem Kapitel erfahren Sie à wie Sie Datenbankobjekte mit dem Enterprise-Manager verwalten à wie SQL Server 2000 Datenbanken physisch speichert à wozu Systemdatenbanken benötigt werden Voraussetzungen ü Basiskenntnisse über Computersysteme und Datenbanken SQL Server 2000 verwendet zur Speicherung und Verwaltung von Daten eine Vielzahl von Objekten oder Komponenten. Dabei kann zwischen logischen und physischen Objekten unterschieden werden: ý Logische Objekte werden von SQL Server 2000 verwaltet. Logische Objekte sind z.B. Datenbanken, Tabellen, Indexe oder Dateigruppen. ý Physische Objekte werden vom Betriebssystem oder von SQL Server 2000 gemeinsam mit dem Betriebssystem verwaltet. Die wichtigsten physischen Objekte sind Dateien auf Betriebssystemebene. 5.1 Logische Datenbankobjekte 5.1.1 Bezeichner Logische Datenbankobjekte werden über einen Bezeichner (Namen) angesprochen. Der Bezeichner darf aus maximal 128 Zeichen bestehen. Erfüllt der Bezeichner die folgenden Bedingungen, handelt es sich um einen regulären Bezeichner: þ Der Bezeichner beginnt mit einem Buchstaben oder mit @ (At-Zeichen), _ (Unterstrich) oder # (Nummernzeichen). þ Der Bezeichner ist nicht mit einem reservierten Wort von Transact-SQL identisch (z.B. SELECT, TEXT). þ Der Bezeichner enthält keine Leer- oder Sonderzeichen. Reguläre Bezeichner können in Transact-SQL ohne besondere Vorkehrungen verwendet werden. SELECT * FROM Mitarbeiter WHERE Abteilung = 'Verkauf' Entspricht ein Bezeichner nicht den Regeln für einen regulären Bezeichner, muss er in [eckige Klammern] eingeschlossen werden. Ist für die Datenbank die Option BEZEICHNER IN ANFÜHRUNGSZEICHEN VERWENDEN aktiviert, können statt der eckigen Klammern auch "Anführungszeichen" verwendet werden. SELECT * FROM [Verzeichnis der Mitarbeiter] WHERE "Wohnort privat" = 'Berlin' Um Fehlerquellen auszuschalten, sollten ausschließlich reguläre Bezeichner verwendet werden. 40 Objektverwaltung 5.1.2 5 Datenbank An der Spitze der Hierarchie von Datenbankobjekten steht die Datenbank selbst. Sie können sich die Datenbank als einen Container vorstellen, der alle anderen Datenbankobjekte in sich enthält. Die Datenbank verfügt über eine Reihe von Eigenschaften, die das Verhalten der Datenbank bestimmen. Diese Eigenschaften können Sie mit Hilfe des Enterprise-Managers festlegen. Þ Klicken Sie in der Konsolenstruktur des Enterprise-Managers mit der rechten Maustaste auf die Datenbank, deren Eigenschaften Sie festlegen möchten. Þ Wählen Sie im Kontextmenü den Befehl EIGENSCHAFEN. Das Dialogfeld EIGENSCHAFTEN wird geöffnet. Þ Klicken Sie auf das Register OPTIDie Kontrollfelder dieses Dialogfensters ermöglichen die Festlegung der gewünschten Datenbankeigenschaften. ONEN. Die zur Verfügung stehenden Op- Register OPTIONEN zur Festlegung von Datenbankeigenschaften tionen werden im Folgenden ausführlich beschrieben. Zugriff einschränken ý Mitglieder von ’db_owner’, ’dbcreater’ oder ’sysadmin’ Die Datenbank kann nur von einem Systemadministrator geöffnet werden. Jeder Systemadministrator gehört automatisch einem speziellen Benutzerkreis namens DBO (DataBase Owner) an (vgl. Kapitel 6). ý Einzelbenutzermodus Es kann sich nur ein einziger Benutzer bei der Datenbank anmelden. Aktivieren Sie diesen Modus, wenn Sie als Datenbankadministrator Arbeiten an der Datenbank vornehmen, bei denen keine weiteren Benutzeraktivitäten zulässig sind. Dies ist z.B. beim Wiederherstellen einer beschädigten Datenbank der Fall. Schreibgeschützt Die Datenbank kann nur für Leseoperationen geöffnet werden. Das Hinzufügen, Ändern oder Löschen von Daten ist nicht gestattet. Aktivieren Sie diese Option z.B. dann, wenn Sie die Datenbank auf einem StandbyServer einsetzen. Notizen 41 5 SQL Server 2000 - Administration Wiederherstellung Im Kombinationsfeld MODELL können Sie festlegen, wie die Datenbank im Schadensfall wiederhergestellt werden soll. ý Einfach Die Datenbank wird mit dem Zustand der letzten Sicherung restauriert. ý Massenprotokollier: Die Datenbank kann mit dem Status der letzten Transaktionsprotokoll-Sicherung wiederhergestellt werden. ý Vollständig Die Datenbank kann bis zum Zeitpunkt des zuletzt aufgetretenen Fehlers rekonstruiert werden. ANSI NULL ist Standard Für die Spalten einer neuen Tabelle wird standardmäßig festgelegt, dass Nullwerte zulässig sind. Rekursive Trigger Ist dieses Kontrollkästchen aktiviert, so kann sich ein Trigger direkt oder indirekt selbst erneut aufrufen. Das Zulassen rekursiver Trigger kann zu Endlosschleifen und dadurch zu unkontrollierten Programmabbrüchen führen. Statistiken automatisch aktualisieren Zur Optimierung der Geschwindigkeit von Abfragen erstellt SQL Server 2000 interne Statistiken über die Verteilung von Werten in Tabellenspalten. Ist diese Option aktiv, werden diese Statistiken bei Bedarf automatisch erstellt. Erkennung von zerrissenen Seiten Ein Strom- oder Systemausfall kann bewirken, dass eine Datenänderung nur unvollständig auf der Festplatte gespeichert wurde. Ist diese Option aktiviert, erkennt SQL Server 2000 bei der automatischen Wiederherstellung den unvollständigen Speichervorgang. Falls Ihr System über keine unterbrechungsfreie Stromversorgung verfügt, sollten Sie diese Option aktivieren. SQL Server 2000 setzt dann bei jedem Speichervorgang ein Prüf-Bit, das die Vollständigkeit der Speicherung überwacht. Automatisch schließen Die Datenbank wird automatisch geschlossen, sobald kein Benutzer mehr mit der Datenbank verbunden ist. Aktivieren Sie diese Option, wenn Sie z.B. mit einem Notebook arbeiten und der einzige Benutzer der Datenbank sind. Das Schließen von Datenbanken gibt Systemressourcen frei. In einer Mehrbenutzerumgebung mit häufigen Zugriffen auf die Datenbank sollte diese Option allerdings deaktiviert sein, da sonst bei jedem Verbindungsversuch die Datenbank erneut geöffnet werden muss. Dies führt zu Geschwindigkeitseinbußen. Automatisch verkleinern Ist diese Option aktiviert, überprüft SQL Server 2000 periodisch, ob nicht verwendeter Speicherplatz in Dateien freigegeben werden kann. Ist dies der Fall, wird die Datei auf eine Größe reduziert, die noch 25 Prozent freien Speicherplatz enthält. Eine Datei kann nicht unter die bei ihrer Erstellung angegebene Mindestgröße verkleinert werden. 42 5 Objektverwaltung Statistiken automatisch erstellen Aktivieren Sie diese Option, wenn SQL Server 2000 die Statistiken nach einer Änderung der Tabellendaten automatisch aktualisieren soll. Die Verwendung von unaktuellen Statistiken kann die Ausführung von Abfragen erheblich verlangsamen. Bezeichner in Anführungszeichen verwenden Ist diese Option aktiv, können Bezeichner (z.B. Tabellennamen) in "Anführungszeichen" oder in [eckige Klammern] eingeschlossen werden. Zeichenfolgen wie 'Fritz Müller' müssen in diesem Fall in einfachen Anführungszeichen stehen. Ist die Option nicht aktiv, können Zeichenfolgen in einfachen oder doppelten Anführungszeichen stehen. Bezeichner, die nicht den Regeln für reguläre Bezeichner entsprechen, müssen in diesem Fall in [eckige Klammern] gesetzt werden. 5.1.3 Tabellen Sämtliche Daten einer Datenbank sind in Tabellen gespeichert. Tabellen organisieren den Datenbestand in Spalten und Zeilen: Primärschlüssel Spalten bzw. Felder KundenNr Zuname Vorname 1 Müller Sabine 2 Meier Gert 3 Scholz Christa Feldnamen Zeilen bzw. Datensätze Datenorganisation in einer Tabelle Jede Spalte in der Tabelle wird durch einen Feldnamen identifiziert. Die Feldnamen sollten den Regeln für reguläre Bezeichner entsprechen. Die Anzahl der Felder und deren Namen werden durch die operative Datenbearbeitung nicht beeinflusst. Jede Zeile der Tabelle bildet einen Datensatz. Ein Datensatz ist die Gesamtheit der Informationen, die über ein bestimmtes Objekt, z.B. über Frau Müller, in der Tabelle gespeichert werden. Die Anzahl und der Inhalt der Datensätze werden durch die operative Datenbearbeitung ständig verändert. Eine besondere Rolle in dieser Tabelle spielt das Feld KundenNr. Es dient dazu, jeden Datensatz eindeutig (unverwechselbar mit anderen Datensätzen) zu kennzeichnen. Ein Feld, das diese Aufgabe in einer Tabelle erfüllt, heißt Primärschlüssel. Notizen 43 5 SQL Server 2000 - Administration Tabelleneigenschaften anzeigen Wie die Datenbank selbst, verfügt auch jede Tabelle über eine Reihe von Eigenschaften, die das Verhalten der Tabelle bestimmen. So können Sie sich im Enterprise-Manager einen Überblick über die Tabelleneigenschaften anzeigen lassen: Þ Klicken Sie im Detailbereich des EnterpriseManagers doppelt auf die gewünschte Tabelle. Das Dialogfenster TABELLENEIGENSCHAFTEN wird geöffnet. Das Dialogfenster informiert Sie über þ den Besitzer der Tabelle þ das Erstellungsdatum der Tabelle þ die Dateigruppe, der die Tabelle zugeordnet ist þ die aktuelle Anzahl der Zeilen (Datensätze) in der Dialogfenster TABELLENEIGENSCHAFTEN Tabelle Zusätzlich erhalten Sie Informationen über die wichtigsten Eigenschaften der in der Tabelle vorhandenen Felder, wie Name, Datentyp und Feldgröße. Das Dialogfeld TABELLENEIGENSCHAFTEN ist schreibgeschützt, d.h., Sie können hier keine Änderungen der Eigenschaften vornehmen. Systemtabellen Jede Datenbank erhält automatisch einen Satz von Systemtabellen, in denen Informationen über die Datenbank selbst gespeichert sind. Gemeinsam bilden diese Tabellen den so genannten Datenbankkatalog. Der Datenbankkatalog speichert und verwaltet Informationen über alle Datenbankobjekte. Sie sollten keine direkten Änderungen in den Systemtabellen vornehmen, da die Datenbank dadurch zerstört werden kann. Verwenden Sie stattdessen die Werkzeuge des Enterprise-Managers. 5.1.4 Index Ein Index dient dazu, das Sortieren, Suchen und Auswählen von Datensätzen einer Tabelle zu beschleunigen. Wie das Stichwortverzeichnis dieser Seminarunterlage, besteht auch ein Datenbankindex im Prinzip aus einer Tabelle mit zwei Spalten: ý In der einen Spalte befinden sich, alphabetisch sortiert, die Einträge eines Tabellenfeldes. ý In der zweiten Spalte wird die physische Zeilennummer dieses Datensatzes gespeichert. So wie ein Buch mehrere Indizes enthalten kann (Index der Ortsnamen, Index der Personen, Index der Abbildungen), können auch auf eine Tabelle mehrere Indizes gesetzt werden. SQL Server 2000 kann maximal 249 Indizes pro Tabelle verwalten. Ein Index kann aus einer oder aus mehreren Spalten (zusammengesetzter Index) einer Tabelle gebildet werden. Maximal können 16 Spalten zur Bildung eines Indexes verwendet werden. Die Gesamtlänge der Spalten, aus denen sich der Index zusammensetzt, darf allerdings 900 Byte nicht überschreiten. Ein Index kann eindeutig sein oder Wiederholungen von Werten zulassen. Wenn Sie auf ein Tabellenfeld einen eindeutigen Index setzen, verhindert SQL Server 2000 die mehrfache Eingabe desselben Werts in dieses Feld. Für das Primärschlüsselfeld einer Tabelle setzt SQL Server 2000 automatisch einen eindeutigen Index. Eine Tabelle kann über genau einen gruppierten Index verfügen. Ein gruppierter Index sortiert die Originaltabelle selbst nach den gewählten Indexspalten. 44 5 Objektverwaltung Indizes werden von SQL Server 2000 als interne Tabellen verwaltet, auf die kein direkter Zugriff möglich ist. Mehrere Indizes, vor allem Indizes über mehrere Spalten, können leicht die Größe der ursprünglichen Tabelle erreichen oder sogar überschreiten. Bei der Festlegung von Indizes sollte daher sorgfältig verfahren werden. Erstellen Sie nur Indizes für ein Feld oder mehrere Felder, wenn Sie sicher sind, dass diese Felder oft für Sortierungen bzw. Sichten verwendet werden. Die Wirkung von Indizes auf die Performance einer Datenbank hängt entscheidend von deren Einsatzgebiet ab. þ Bei einer operativ verwendeten Datenbank, wo täglich sehr viele Änderungen stattfinden, vermindern viele Indizes die Performance der Datenbank, da nach jeder Datenbearbeitung die Indizes aktualisiert werden müssen. Dies kann zu einer hohen Belastung der Systemressourcen führen. þ Bei einer analytisch genutzten Datenbank, auf die Benutzer nur lesend zugreifen, können zweckmäßig gesetzte Indizes den Datenzugriff erheblich beschleunigen. Indizes erstellen und verwalten Þ Klicken Sie mit der rechten Maustaste im Detailbereich des Enterprise-Managers auf die Tabelle, deren Indizes Sie verwalten wollen. Þ Wählen Sie im Kontextmenü den Befehl ALLE TASKS und daraus den Befehl INDIZES VEWALTEN. Das Dialogfenster INDIZES VERWALTEN wird geöffnet, und die vorhandenen Indizes der Tabelle werden angezeigt. Þ Klicken Sie auf NEU, um der Tabel- Verwalten von Indizes - Übersicht le einen Index hinzuzufügen. Das Dialogfeld NEUEN INDEX ERSTELLEN wird geöffnet. oder Þ Klicken Sie auf BEARBEITEN, um Änderungen an einem bereits vorhandenen Index vorzunehmen. Þ Geben Sie in das Feld INDEXNAME einen Namen für den neuen Index ein. Þ Aktivieren Sie das Kontrollfeld SPALTE für die Tabellenspalten, die Sie in den Index aufnehmen möchten. Ein Index über mehrere Spalten wird hierarchisch von oben nach unten sortiert. Mit den Schaltflächen AUFWÄRTS bzw. ABWÄRTS können Sie die Reihenfolge der Spalten anpassen. In der nebenstehenden Abbildung wird ein zusammengesetzter Index erstellt, der zuerst nach Zuname und dann nach Vorname sortiert (Telefonbuchsortierung). Þ Erstellen Sie den Index mit OK. Erstellen und Bearbeiten eines Indexes 45 5 SQL Server 2000 - Administration Für einen Index können folgende Optionen festgelegt werden: Gruppierter Index Die Originaltabelle selbst wird nach den Indexspalten sortiert. Pro Tabelle kann nur ein gruppierter Index erstellt werden. Eindeutige Werte Ist diese Option aktiviert, kann die indizierte Spalte nur eindeutige Werte enthalten. Bei einem zusammengesetzten Index können die einzelnen Spalten des Indexes Wiederholungen enthalten. Die Kombination aller indizierter Spalten muss jedoch einen eindeutigen Wert ergeben. Doppelte Werte ignorieren Diese Option ist nur für einen eindeutigen Index wirksam. Sie steuert das Verhalten von SQL Server 2000, wenn Sie versuchen, in eine Tabelle Werte einzufügen, die dem eindeutigen Index widersprechen. Ist die Option nicht aktiv, wird die gesamte Aktion mit einer Fehlermeldung abgebrochen. Ist die Option aktiv, wird eine Warnmeldung ausgegeben und der Datensatz mit dem doppelten Wert nicht in die Tabelle eingefügt. Sie wollen 100 Datensätze einer Tabelle hinzufügen. Einer dieser Datensätze enthält einen doppelten Wert für einen eindeutigen Index. Ist die Option nicht aktiv, wird kein einziger Datensatz hinzugefügt, da SQL Server 2000 die gesamte Aktion abbricht. Ist die Option aktiv, wird nur der eine Datensatz mit dem doppelten Wert nicht hinzugefügt. Statistik nicht erneut berechnen (nicht empfohlen) Zur Optimierung von Abfragen führt SQL Server 2000 interne Statistiken über die Verteilung von Werten in Tabellenspalten. Sie sollten diese Option nicht aktivieren, da durch sie die Systemgeschwindigkeit herabgesetzt werden kann. Dateigruppe Falls Sie in der Datenbank Dateigruppen erstellt haben, können Sie den Index einer vorhandenen Dateigruppe zuordnen. So können Sie bewirken, dass der Index physisch auf einer bestimmten Festplatte gespeichert wird. Vorhandenen löschen Aktivieren Sie diese Option, wenn bereits ein Index desselben Namens vorhanden ist, den Sie durch den neuen Index ersetzen wollen. Füllfaktor Der Füllfaktor weist SQL Server 2000 an, intern physischen Speicherplatz für künftige Indexänderungen freizuhalten. Die Zahl gibt den Füllungsgrad einer Indexseite in Prozent an. Ein kleiner Füllfaktor vergrößert proportional den für den Index benötigten Speicherplatz. Er kann jedoch zu einer Verbesserung der Geschwindigkeit beitragen, falls sich der Index sehr häufig ändert. Index auffüllen reserviert zusätzlichen internen Speicherplatz und verwendet dafür den Prozentwert von Füllfaktor. 5.1.5 Sichten Sichten dienen dazu, gezielt Datensätze oder Felder aus einer oder aus mehreren Tabellen auszuwählen. In einer Sicht werden keine Daten gespeichert. Eine Sicht speichert vielmehr eine Transact-SQL-Anweisung, die festlegt, welche Daten aus welchen Tabellen ausgewählt werden sollen. Das Ergebnis einer Sicht spiegelt daher stets den aktuell in den beteiligten Tabellen vorhandenen Datenbestand wider. Die folgende Transact-SQL-Anweisung erstellt eine Sicht namens TestView. Die Sicht wählt aus der Tabelle Mitarbeiter die Felder Vorname und Zuname aus, aber nur für die Mitarbeiter, die in der Abteilung Verkauf tätig sind: 46 5 Objektverwaltung CREATE VIEW TestView AS SELECT Vorname, Zuname FROM Mitarbeiter WHERE Abteilung = 'Verkauf' Jede Datenbank enthält eine Reihe vordefinierter Sichten zur Abfrage des Datenbankkatalogs. Löschen oder ändern Sie diese Sichten nicht, da sie intern vom Enterprise-Manager verwendet werden. Für eine Schritt-für-Schritt-Anleitung zur komfortablen Erstellung einer Sicht vgl. Kapitel 8. 5.1.6 Dateigruppen Eine Datenbank kann physisch in mehreren Datendateien gespeichert werden. Es ist jedoch nicht möglich, Datenbankobjekte wie Tabellen oder Indizes direkt einer bestimmten Datendatei zuzuordnen. Eine oder mehrere physische Datendateien können jedoch logisch einer Dateigruppe zugeordnet werden. Da auch Datenbankobjekte einer Dateigruppe zugeordnet werden können, ermöglichen Dateigruppen indirekt die Festlegung des physischen Speicherortes von Datenbankobjekten. Dateigruppen werden meistens eingesetzt, um Datenbankobjekte gezielt auf verschiedene Festplatten zu verteilen. In einer Unternehmensdatenbank lassen sich zwei Arten von Tabellen unterscheiden: þ Tabellen, in denen nur selten Änderungen vorgenommen werden þ Tabellen, in denen täglich viele Änderungen vorgenommen werden Die entsprechenden Tabellen werden mit Hilfe von Dateigruppen auf verschiedene Festplatten verteilt. Diese Konfiguration þ þ vermindert Konflikte bei Lese-/Schreiboperationen auf der Festplatte und steigert dadurch die Performance des Systems erlaubt getrennte und effektive Sicherungsstrategien für die verschiedenen Tabellenarten Laufwerk D: Stamm1.ndf Stamm2.ndf Dateigruppe STAMMDATEN tblKunde tblArtikel Dateigruppe AKTUELL tblBestellung tblRechnung Laufwerk E: Aktuell1.mdf Aktuell2.ndf Verteilung von statischen und dynamischen Tabellen auf verschiedene Festplatten Notizen 47 5 SQL Server 2000 - Administration Eine Dateigruppe erstellen und zuordnen Þ Klicken Sie in der Konsolenstruktur des Enterprise-Managers mit der rechten Maustaste auf die Datenbank, in der Sie eine Dateigruppe erstellen wollen. Þ Wählen Sie im Kontextmenü den Befehl EIGENSCHAFTEN. Das Dialogfenster EIGENSCHAFTEN für Dateigruppe(n) erstellen und Dateien zuordnen diese Datenbank wird geöffnet. Aktivieren Sie die Registerkarte DATENDATEIEN. Þ Geben Sie in die erste leere Zeile den Dateinamen, den Speicherort (Pfad), die Größe des reservierten Speichers und den Namen der Dateigruppe ein. Wiederholen Sie den letzten Schritt für jede Datendatei, die Sie einer Dateigruppe zuordnen möchten. Þ Bestätigen Sie Ihre Eingaben mit OK. Þ Erweitern Sie in der Konsolenstruktur die Datenbank, in der Sie Dateigruppen verwenden möchten. Klicken Sie auf den Eintrag TABELLEN. Þ Klicken Sie im Detailbereich des Enterprise-Managers mit der rechten Maustaste auf die Tabelle, die Sie einer Dateigruppe zuordnen möchten. Wählen Sie im Kontextmenü den Befehl TABELLE BEARBEITEN. Ein neues Fenster mit der Tabellenstruktur wird geöffnet. Þ Klicken Sie auf das Symbol TABELLEN- UND INDEXEIGENSCHAFTEN wird geöffnet. . Das Dialogfenster EIGEN- SCHAFTEN Þ Wählen Sie im Kombinationsfeld TABELdie Dateigruppe aus, der Sie die Tabelle zuordnen möchten. LENDATEIGRUPPE Þ Þ Falls die Tabelle Felder vom Datentyp text, ntext oder image enthält: Wählen Sie im Kombinationsfeld TEXTDATEIGRUPPE die Dateigruppe aus, in der Sie diese Felder speichern möchten. Beenden Sie Ihre Eingaben mit SCHLIESSchließen Sie das Fenster im Enterprise-Manager. Bestätigen Sie in den folgenden Dialogfenstern das Speichern Ihrer Änderungen mit JA. SEN. Tabelle einer Dateigruppe zuordnen 5.2 Physische Datenbankobjekte 5.2.1 Dateien Physisch werden alle Datenbanken und mit ihnen alle logischen Datenbankobjekte als Dateien des Betriebssystems gespeichert. SQL Server 2000 kann Dateien im Dateiformat FAT bzw. FAT32 (Betriebssystem Windows 98) und NTFS (Betriebssystem Windows NT/2000) speichern. SQL Server 2000 kann keine Dateien auf komprimierten Laufwerken speichern. 48 Objektverwaltung 5 Jede Datenbank besteht aus zumindest zwei Dateien: þ der primären Datendatei mit der Erweiterung .mdf þ einer Protokolldatei mit der Erweiterung .ldf Eine Datenbank kann jedoch auf zusätzliche Dateien verteilt werden. Dies wird dann der Fall sein, þ wenn eine Datendatei die Kapazität eines Laufwerks überschreiten würde þ wenn eine Aufteilung von Datendateien auf mehrere Laufwerke erwünscht ist (vgl. Abschnitt 5.1.6) Zusätzliche Datendateien erhalten die Erweiterung .ndf. Alle zusätzlichen Protokolldateien besitzen ebenfalls die Erweiterung .ldf. Die Dateierweiterungen für die verschiedenen Dateitypen werden von SQL Server 2000 nicht erzwungen. Es ist jedoch zu empfehlen, die standardmäßigen Erweiterungen beizubehalten, da das Dateimanagement dadurch erleichtert wird. 5.2.2 Seiten und Blöcke Innerhalb der Datendateien werden die Daten in Seiten und Blöcken gespeichert. Eine Seite stellt die kleinste Speichereinheit dar und hat eine Größe von 8 KB. Seiten werden in Blöcken organisiert. Ein Block ist die kleinste Einheit zur Speicherreservierung und umfasst 8 Seiten, also 8 x 8 = 64 KB. Ein Block kann von einem Objekt oder von maximal acht verschiedenen Objekten genutzt werden. Bei einem einheitlichen Block sind alle acht Seiten des (neuen) Blocks für ein einziges Objekt, z.B. eine Tabelle, reserviert. Ein gemischter Block kann unterschiedliche Seitentypen beinhalten. Neue Tabellen oder Indizes werden in einem gemischten Block angelegt. Erst wenn ein Objekt die Größe von 8 Seiten überschreitet, wird in Zukunft ein einheitlicher Block für die Erweiterung reserviert. Die Organisation der Dateien in Seiten und Blöcke kann vom Datenbankadministrator nicht direkt beeinflusst werden. 5.3 Systemdatenbanken Bei jeder Installation von SQL Server 2000 werden automatisch vier Systemdatenbanken erzeugt. Diese Systemdatenbanken speichern und verwalten Daten, die Informationen über das gesamte SQL-Server-System enthalten, so genannte Metadaten. SQL Server 2000 erzeugt und aktualisiert diese Informationen automatisch und schreibt Einstellungen, die Sie mit Hilfe grafischer Werkzeuge vornehmen, in die entsprechende Systemdatenbank. Notizen 49 5 SQL Server 2000 - Administration Standardmäßig werden die Systemdatenbanken aus Sicherheitsgründen nicht im Enterprise-Manager angezeigt. Führen Sie folgende Schritte aus, um die Systemdatenbanken anzuzeigen: Þ Klicken Sie in der Konsolenstruktur mit der rechten Maustaste auf den SQL Server. Þ Wählen Sie den Befehl EIGENSCHAFTEN DER SQL SERVER-REGISTRIERUNG BEARBEITEN. Das Dialogfenster REGISTRIERTER SQL SERVER - EIGENSCHAFTEN wird geöffnet. Þ Aktivieren Sie das Kontrollfeld SYSTEMDASYSTEMOBJEKTE ANZEIGEN. TENBANKEN UND Þ Bestätigen Sie mit OK. Die vier Systemdatenbanken werden nun in der Konsolenstruktur des Enterprise-Managers angezeigt. Jede Änderung an den Systemdatenbanken kann den Ausfall von SQL Server 2000 zur Folge haben. Sie sollten daher keine direkten Änderungen in den Systemdatenbanken vornehmen, sondern stets die dafür vorgesehenen grafischen Werkzeuge verwenden. In den folgenden Abschnitten dieses Kapitels werden Systemdatenbanken anzeigen die Funktionen und der Aufbau der vier Systemdatenbanken master, model, msdb und tempdb beschrieben. 5.3.1 Die Systemdatenbank master Die Datenbank master ist der zentrale Speicherort für alle Informationen, die das gesamte Server-System betreffen. Die mehr als 60 Systemtabellen der master-Datenbank bilden den so genannten Systemkatalog, der die Metadaten des Systems enthält. Zu diesen Metadaten zählen Informationen über die Benutzerdatenbanken im System, Login-Konten und Einstellungen der Server-Konfiguration. Gespeicherte Prozeduren master beinhaltet außerdem einen Satz gespeicherter Prozeduren (ca. 670) und erweiterter gespeicherter Prozeduren (ca. 190), die im gesamten System zur Verfügung stehen. Eine gespeicherte Prozedur besteht aus einer Reihe von Transact-SQL-Anweisungen, die unter einem Prozedurnamen zusammengefasst sind und aufgerufen werden können. Der Name einer gespeicherten Prozedur beginnt meist mit dem Präfix sp_ für Stored Procedure bzw. System Procedure. Erweiterte gespeicherte Prozeduren werden in einer Programmiersprache wie C++ erstellt und als Dynamic Link Library (.DLL-Datei) gespeichert. Ihr Name beginnt ebenfalls mit dem Präfix sp_ oder auch mit xp_ für Extended Procedure. Gespeicherte und erweiterte gespeicherte Prozeduren werden verwendet, um þ Informationen über das System und über Datenbankobjekte zu erhalten þ Änderungen an der Konfiguration oder an Datenbankobjekten vorzunehmen Assistenten und die grafischen Werkzeuge des Enterprise-Managers verwenden intern oft gespeicherte Prozeduren. Dies gestattet Ihnen den komfortablen Einsatz dieser Prozeduren, ohne dass Sie sich mit der teilweise sehr komplexen Befehlszeilensyntax vertraut machen müssten. 50 Objektverwaltung 5 Die Systemprozedur sp_help gibt Informationen über ein beliebiges Datenbankobjekt aus. Starten Sie den Query Analyzer und geben Sie den Befehl sp_help ein. sp_help liefert eine Auflistung aller vorhandenen Datenbankobjekte: Liste der Datenbankobjekte (Ausschnitt) mit sp_help sp_help Objektname gibt Informationen über das jeweilige Objekt aus: Informationen über die Tabelle tblArtikel mit sp_help Eine Referenz aller Prozeduren mit Aufrufparametern und Beispielen finden Sie in der Online-Dokumentation von SQL Server 2000. 5.3.2 Die Systemdatenbank model Diese Datenbank dient als Vorlage für die Erstellung neuer Benutzerdatenbanken. Eine neue Benutzerdatenbank enthält bei ihrer Erstellung alle Systemobjekte von model, insbesondere die Systemtabellen und Sichten. Änderungen in der Datenbank model wirken sich auf jede Benutzerdatenbank aus, die nach diesen Änderungen erstellt wird. Notizen 51 5 SQL Server 2000 - Administration 5.3.3 Die Systemdatenbank msdb Die Datenbank msdb wird vom Server-Dienst SQL Server-Agent verwendet. msdb speichert z.B. þ Terminpläne für Datenbanksicherungen þ Wartungsaufträge þ die Ausgabe von Warnmeldungen bei bestimmten Ereignissen 5.3.4 Die Systemdatenbank tempdb Die Datenbank tempdb dient zum Speichern aller temporärer Tabellen und anderer temporärer Objekte, z.B. von Prozeduren. Bei der Arbeit mit einem Datenbanksystem werden oft Tabellen und andere Objekte erzeugt und verwendet, die zwischenzeitlich gespeichert werden müssen. SQL Server 2000 verwaltet alle diese Objekte in der Datenbank tempdb. Greifen viele Benutzer gleichzeitig mit komplexen Aufgaben auf den Server zu, kann die Größe dieser Datenbank drastisch anwachsen. Für die Datenbankdateien sollte daher eine automatische Vergrößerung zugelassen werden, um eine Systemüberlastung zu vermeiden. Kommt es im Betrieb von SQL Server 2000 regelmäßig zu einer Vergrößerung von tempdb, sollten Sie manuell mehr Speicher für diese Datenbank reservieren. Die automatische Vergrößerung im laufenden Betrieb kann zu Wartezeiten bei der Datenbearbeitung führen. Wird SQL Server 2000 beendet, werden alle temporären Objekte in tempdb gelöscht. Bei einem Neustart von SQL Server 2000 wird daher stets eine "leere" Datenbank verwendet, die nur die Systemobjekte enthält. Falls im Verlauf der vergangenen Sitzung eine automatische Vergrößerung der Datenbank notwendig wurde, wird die Datenbank beim Neustart wieder auf den ursprünglich gewählten Wert verkleinert. 5.3.5 Dateien der Systemdatenbanken Wie alle Datenbanken in SQL Server 2000 werden auch die Systemdatenbanken physisch als ein Satz von Dateien gespeichert. Standardmäßig werden diese Dateien im Installationsverzeichnis im Ordner DATA gespeichert. Jede Datenbank besteht zumindest aus zwei Dateien, der Datendatei und der Protokolldatei. Die folgende Tabelle gibt einen Überblick über die Dateinamen und standardmäßigen Dateigrößen: 52 Datenbank Datendatei master master.mdf model model.mdf msdb msdbdata.mdf tempdb tempdb.mdf Standardgröße in MB 11,00 Protokolldatei Standardgröße in MB mastlog.ldf 1,25 0,75 modellog.ldf 0,75 12,00 msdblog.ldf 2,25 8,00 temblog.ldf 0,50 Objektverwaltung 5.4 5 Wissens-Check Die folgenden Fragen sollen Ihnen die Einschätzung Ihrer Lernerfolge erleichtern. Falls Sie Schwierigkeiten bei der Beantwortung haben, arbeiten Sie die entsprechenden Abschnitte dieses Kapitels noch einmal durch. Die Antworten auf die Fragen finden Sie im Kapitel 17. 5.1 Welche Funktion erfüllt die Systemdatenbank model? 5.2 Erläutern Sie das Konzept der Dateigruppen. Wozu dient die Verwendung von Dateigruppen? 5.3 Für eine Tabelle existiert ein Index mit der Option EINDEUTIGE WERTE. Sie wollen nun dieser Tabelle eine Reihe von Datensätzen hinzufügen. Einige dieser Datensätze enthalten jedoch doppelte Werte. Wie wirkt sich die Option DOPPELTE WERTE IGNORIEREN auf diesen Vorgang aus? 53