D3kjd3Di38lk323nnm ix Inhaltsverzeichnis Teil 1 SQL Server: Grundkonzepte 1 Einleitung 1.1 Eigenschaften von MS SQL Server 2005 . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Datenbanken – allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 Logische Datenunabhängigkeit . . . . . . . . . . . . . . . . . . . . . . . Physikalische Datenunabhängigkeit . . . . . . . . . . . . . . . . . . . . Prozedurale und nichtprozedurale Schnittstellen . . . . . . . . . . Effiziente Abarbeitung der Datenbankoperationen . . . . . . . . Datenintegrität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Konkurrierender Datenzugriff . . . . . . . . . . . . . . . . . . . . . . . . Datensicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Datenschutz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 5 6 6 6 6 7 7 7 1.3 Relationale Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4 Datenbankdesign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.4.6 Allgemeine Hinweise zur Normalisierung . . . . . . . . . . . . . . Erste Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zweite Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dritte Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Vierte Normalform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Entity/Relationship(E/R)-Modell . . . . . . . . . . . . . . . . . . . . . 12 12 13 13 14 14 1.5 Datenbanksprache SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 1.6 Notation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 1.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.8 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Dusan Petkovic, SQL Server 2005, dpunkt.verlag, ISBN 978-3-89864-367-2 x Inhaltsverzeichnis 2 SQL Server Management Studio 2.1 SQL Server-Programmgruppe und Onlinedokumentation . . . . . . . . . 21 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.2 SQL Server-Onlinedokumentation . . . . . . . . . . . . . . . . . . . . Benutzung von Management Studio . . . . . . . . . . . . . . . . . . . Management Studio und der relationale Datenbankserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Verwaltung von Datenbanken mit Objekt-Explorer . . . . . . . Verwaltung von Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 21 23 25 28 31 Abfragen mit SQL Server Management Studio . . . . . . . . . . . . . . . . . 35 2.2.1 2.2.2 Query Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Projektmappen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.3 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Teil 2 Der relationale Datenbankserver: Grundkonzepte 3 Grundkomponenten des relationalen Datenbankservers 3.1 Grundelemente der SQL-Sprache . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.1.1 3.1.2 3.1.3 3.1.4 3.2 Literale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Begrenzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Namen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reservierte Wörter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 43 45 45 45 Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 Numerische Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alphanumerische Datentypen . . . . . . . . . . . . . . . . . . . . . . . . Datums- und Zeitangaben . . . . . . . . . . . . . . . . . . . . . . . . . . Abgeleitete Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . Weitere Datentypen des relationalen Datenbankservers . . . . 46 47 49 50 50 3.3 Prädikate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.4 Aggregatfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.5 Skalare Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.5.1 3.5.2 3.5.3 3.5.4 Numerische Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . Datumsfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Zeichenkettenfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . Systemfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 54 55 56 Inhaltsverzeichnis 3.6 xi Skalare Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 3.6.1 Globale Variablen und Ausdrücke . . . . . . . . . . . . . . . . . . . . 59 3.7 NULL-Werte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 3.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.9 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 4 Datendefinition 4.1 Erstellen der Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.1.1 4.1.2 4.1.3 4.1.4 4.1.5 Erstellen einer Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . Erstellen einer Kopie einer Datenbank . . . . . . . . . . . . . . . . . CREATE TABLE-Anweisung – die Grundform . . . . . . . . . . Erweiterte Form der CREATE TABLE-Anweisung . . . . . . . CREATE TABLE-Anweisung und deklarative Integritätsregeln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.6 UNIQUE-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.7 PRIMARY KEY-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.8 FOREIGN KEY-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.9 Referenzielle Integrität . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.10 ON DELETE- und ON UPDATE-Angabe . . . . . . . . . . . . . . 4.1.11 CHECK-Bedingung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.1.12 Weitere Anweisungen zur Erstellung der Datenbankobjekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.2 64 66 67 69 70 72 72 73 74 77 78 79 Integritätsregeln und Wertebereiche . . . . . . . . . . . . . . . . . . . . . . . . . 81 4.2.1 4.2.2 4.2.3 4.3 63 Alias-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 Definition der Standardwerte . . . . . . . . . . . . . . . . . . . . . . . 83 Regeldefinition für Wertebereiche . . . . . . . . . . . . . . . . . . . . 84 Änderung der Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.3.1 4.3.2 4.3.3 Änderung einer Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . 86 Änderung der Tabellenstruktur . . . . . . . . . . . . . . . . . . . . . . 88 Erweiterte Form der ALTER TABLE-Anweisung . . . . . . . . 89 4.4 Löschen der Objekte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 5 Einfache Abfragen 5.1 Grundform der SELECT-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . 95 Dusan Petkovic, SQL Server 2005, dpunkt.verlag, ISBN 978-3-89864-367-2 95 xii Inhaltsverzeichnis 5.2 WHERE-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 5.2.1 5.2.2 5.2.3 5.2.4 5.3 Boolesche Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Operatoren IN und BETWEEN . . . . . . . . . . . . . . . . . . . . . 102 NULL-Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 LIKE-Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 Einfache Unterabfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 Unterabfragen und Vergleichsoperatoren . . . . . . . . . . . . . . Unterabfragen und IN-Operator . . . . . . . . . . . . . . . . . . . . Operatoren ANY und ALL . . . . . . . . . . . . . . . . . . . . . . . . Funktion EXISTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Unterabfragen in der FROM-Klausel . . . . . . . . . . . . . . . . . 111 112 113 115 116 5.4 GROUP BY-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 5.5 Aggregatfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 5.5.1 5.5.2 5.5.3 5.5.4 Standard-Aggregatfunktionen . . . . . . . . . . . . . . . . . . . . . . Statistische Aggregatfunktionen . . . . . . . . . . . . . . . . . . . . . Super-Aggregatfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . Benutzerdefinierte Aggregatfunktionen . . . . . . . . . . . . . . . 118 123 124 125 5.6 HAVING-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 5.7 ORDER BY-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 5.8 SELECT-Anweisung und IDENTITY-Eigenschaft . . . . . . . . . . . . . . 128 5.9 Mengenoperatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 5.10 Verwendung von CASE in Ausdrücken . . . . . . . . . . . . . . . . . . . . . . 134 5.11 COMPUTE-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 5.12 Temporäre Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 5.13 Berechnete Spalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 5.14 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 5.15 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 6 Komplexe Abfragen 6.1 Verknüpfen zweier oder mehrerer Tabellen . . . . . . . . . . . . . . . . . . . 143 6.2 Zwei Syntaxformen für die Join-Operation . . . . . . . . . . . . . . . . . . . 144 6.2.1 6.2.2 6.2.3 6.2.4 Equijoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Kartesisches Produkt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Natürlicher Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Thetajoin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 145 147 149 150 Inhaltsverzeichnis 6.2.5 6.2.6 6.2.7 xiii Verknüpfung von mehr als zwei Tabellen . . . . . . . . . . . . . 152 Eine Tabelle mit sich selbst verknüpfen . . . . . . . . . . . . . . . 154 Outer Join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 6.3 Korrelierte Unterabfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 6.4 EXISTS-Funktion in Unterabfragen . . . . . . . . . . . . . . . . . . . . . . . . 161 6.5 Common Table Expressions – CTE . . . . . . . . . . . . . . . . . . . . . . . . 165 6.5.1 6.5.2 6.5.3 Benannte Ausdrücke in nichtrekursiven Abfragen . . . . . . 165 Benannte Ausdrücke in rekursiven Abfragen . . . . . . . . . . 167 APPLY-Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 6.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 6.7 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 7 Änderung der Tabelleninhalte 7.1 INSERT-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 7.1.1 7.1.2 173 Einfügen einer Reihe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Einfügen mehrerer Reihen . . . . . . . . . . . . . . . . . . . . . . . . . 176 7.2 UPDATE-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 7.3 DELETE-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 7.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 7.5 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 8 SQL-Erweiterungen und gespeicherte Prozeduren 8.1 Transact-SQL-Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 8.1.1 8.1.2 8.1.3 8.1.4 8.1.5 8.1.6 8.2 BEGIN-Block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IF-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . WHILE-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Lokale Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Weitere prozedurale Anweisungen . . . . . . . . . . . . . . . . . . Ausnahmebehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 184 184 185 186 187 188 Gespeicherte Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 8.2.1 8.2.2 8.2.3 Erstellung und Ausführung der gespeicherten Prozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Systemprozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Gespeicherte Prozeduren und CLR . . . . . . . . . . . . . . . . . . 197 Dusan Petkovic, SQL Server 2005, dpunkt.verlag, ISBN 978-3-89864-367-2 xiv Inhaltsverzeichnis 8.3 Benutzerdefinierte Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 8.3.1 8.3.2 Erstellung und Ausführung benutzerdefinierter Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Benutzerdefinierte Funktionen und CLR . . . . . . . . . . . . . . 206 8.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 8.5 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 9 Indizes und die Optimierung der Abfragen 9.1 Indizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 9.1.1 9.1.2 9.1.3 9.2 WHERE-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 AND-Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Join-Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Allgemeine Kriterien zur Verbesserung der Effizienz . . . . . . . . . . . . 221 9.3.1 9.3.2 9.3.3 9.3.4 9.4 Clustered und Nonclustered Indizes . . . . . . . . . . . . . . . . . . 211 Transact-SQL-Anweisungen in Bezug auf Indizes . . . . . . . . 213 Indizes und Schlüssel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Kriterien zur Erstellung eines Index . . . . . . . . . . . . . . . . . . . . . . . . . 219 9.2.1 9.2.2 9.2.3 9.3 209 Join statt korrelierter Unterabfrage . . . . . . . . . . . . . . . . . . Unvollständige Anweisungen . . . . . . . . . . . . . . . . . . . . . . . LIKE-Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL und das Optimieren von Suchanweisungen . . . . . . . . 222 222 223 223 Der Optimierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 9.4.1 9.4.2 9.4.3 Statistiken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Implementierung der Join-Operation . . . . . . . . . . . . . . . . . 229 Hinweise für den Optimierer . . . . . . . . . . . . . . . . . . . . . . . 231 9.5 dbcc-Kommando und Indizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 9.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240 9.7 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 10 Sichten 10.1 Datendefinitionsanweisungen und Sichten . . . . . . . . . . . . . . . . . . . . 243 243 10.1.1 Erstellen von Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 10.1.2 Sichten modifizieren und löschen . . . . . . . . . . . . . . . . . . . . 249 10.2 Abfragen auf Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250 10.3 INSERT-Anweisung und Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 Inhaltsverzeichnis xv 10.4 UPDATE-Anweisung und Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . 254 10.5 DELETE-Anweisung und Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . 256 10.6 Indizierte Sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 10.6.1 Anforderungen bezüglich indizierter Sichten . . . . . . . . . . . 258 10.6.2 Änderung der Struktur einer indizierten Sicht . . . . . . . . . . 261 10.6.3 Optimiererhinweise und indizierte Sichten . . . . . . . . . . . . 261 10.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 10.8 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 11 Systemkatalog des relationalen Datenbankservers 11.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 11.2 Katalogsichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 11.2.1 11.2.2 11.2.3 11.2.4 11.3 Katalogsicht sys.objects . . . . . . . . . . . . . . . . . . . . . . . . . . . Katalogsicht sys.columns . . . . . . . . . . . . . . . . . . . . . . . . . . Katalogsicht sys.database_principals . . . . . . . . . . . . . . . . . Katalogsicht sys.databases . . . . . . . . . . . . . . . . . . . . . . . . . 263 264 265 265 265 Weitere Formen von Katalogsichten . . . . . . . . . . . . . . . . . . . . . . . . 266 11.3.1 Kompatibilitätssichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 11.4 Abfragen mit Hilfe von Katalogsichten . . . . . . . . . . . . . . . . . . . . . 267 11.5 Andere Abfragemöglichkeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 11.5.1 11.5.2 11.5.3 11.5.4 Systemprozeduren und der Systemkatalog . . . . . . . . . . . . . Systemfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Eigenschaftsfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . Informationsschema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 270 271 271 11.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273 11.7 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274 12 Sicherheitskonzept des relationalen Datenbankservers 12.1 Authentifizierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275 275 12.1.1 Verschlüsselungsmechanismen . . . . . . . . . . . . . . . . . . . . . 277 12.1.2 Authentifizierung mit Hilfe der DDL-Anweisungen . . . . . . 278 12.1.3 Authentifizierung mit Hilfe der Systemprozeduren . . . . . . 280 12.2 Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 12.2.1 Schemata und Benutzer . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 12.2.2 DDL-Anweisungen bezüglich Schemata . . . . . . . . . . . . . 282 Dusan Petkovic, SQL Server 2005, dpunkt.verlag, ISBN 978-3-89864-367-2 xvi 12.3 Inhaltsverzeichnis Datenbanksicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 12.3.1 Aufbau der Datenbanksicherheit mit Hilfe der DDL-Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285 12.3.2 Aufbau der Datenbanksicherheit mit Hilfe der Systemprozeduren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 12.3.3 Standard-Datenbankschemata . . . . . . . . . . . . . . . . . . . . . . 287 12.4 Rollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 12.4.1 12.4.2 12.4.3 12.4.4 12.5 Vordefinierte Serverrollen . . . . . . . . . . . . . . . . . . . . . . . . . Vordefinierte Datenbankrollen . . . . . . . . . . . . . . . . . . . . . . Applikationsrollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Benutzerdefinierte Rollen . . . . . . . . . . . . . . . . . . . . . . . . . . 288 289 290 291 Autorisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293 12.5.1 GRANT-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 12.5.2 DENY-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298 12.5.3 REVOKE-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 12.6 Einschränkung des Datenzugriffs mit Hilfe von Sichten . . . . . . . . . . 300 12.7 Einschränkung des Zugriffs mit gespeicherten Prozeduren . . . . . . . . 301 12.8 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 12.9 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302 13 Prozedurale Datenintegrität 13.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 13.2 Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306 13.2.1 13.2.2 13.2.3 13.2.4 13.2.5 Anwendungsgebiete für AFTER-Trigger . . . . . . . . . . . . . . . Anwendungsgebiete für INSTEAD OF-Option . . . . . . . . . Multiple Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Änderung der Trigger-Struktur . . . . . . . . . . . . . . . . . . . . . . DDL-Trigger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305 308 311 312 313 314 13.3 Trigger und CLR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315 13.4 OUTPUT-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318 13.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320 13.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321 14 Transaktionen 14.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323 323 Inhaltsverzeichnis 14.2 xvii Transact-SQL-Anweisungen in Bezug auf Transaktionen . . . . . . . . 324 14.2.1 Speicherung von Transaktionen . . . . . . . . . . . . . . . . . . . . 327 14.3 Sperren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 14.3.1 14.3.2 14.3.3 14.3.4 14.3.5 Objekte sperren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Typen von Sperren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SELECT-Anweisung und Sperren . . . . . . . . . . . . . . . . . . . Isolierungsstufen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Reihenversionen und die Snapshot-Isolierungsstufen . . . . . 328 329 332 332 334 14.4 Gegenseitige Blockierung (Deadlock) . . . . . . . . . . . . . . . . . . . . . . . 335 14.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 14.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337 15 Systemumgebung 15.1 Speicherung von Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 15.2 Systemdatenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340 15.3 SQL Server-Dienstprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341 339 15.3.1 sqlcmd-Dienstprogramm . . . . . . . . . . . . . . . . . . . . . . . . . . 341 15.3.2 bcp-Kommando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343 15.4 Instanzen des SQL Server-Systems . . . . . . . . . . . . . . . . . . . . . . . . . 345 15.5 Unterstützung nationaler Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . 346 15.5.1 Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 15.6 Architektur des relationalen Datenbankservers . . . . . . . . . . . . . . . . 348 15.6.1 Architektur der Multiprozessorrechner . . . . . . . . . . . . . . . 348 15.6.2 Multithreading-Architektur . . . . . . . . . . . . . . . . . . . . . . . . 349 15.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 15.8 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Teil 3 Der relationale Datenbankserver: Systemadministration 16 Systemadministration 355 16.1 Relationaler Datenbankserver und Systemadministration . . . . . . . . 355 16.2 SQL Server 2005-Programmgruppe . . . . . . . . . . . . . . . . . . . . . . . . 356 16.2.1 SQL Computer Manager . . . . . . . . . . . . . . . . . . . . . . . . . . 357 Dusan Petkovic, SQL Server 2005, dpunkt.verlag, ISBN 978-3-89864-367-2 xviii Inhaltsverzeichnis 16.3 Systemadministrator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 16.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359 17 Planung und Ausführung der Systeminstallation 17.1 Planung der Installation eines SQL Server-Systems . . . . . . . . . . . . . 361 17.1.1 17.1.2 17.1.3 17.1.4 17.2 Anwendungszweck eines SQL Server-Systems . . . . . . . . . . Hard- und Software-Voraussetzungen . . . . . . . . . . . . . . . . SQL Server-Systemvarianten . . . . . . . . . . . . . . . . . . . . . . . Notwendige Angaben bei der Installation . . . . . . . . . . . . . . 361 361 362 363 364 Installation eines SQL Server-Systems . . . . . . . . . . . . . . . . . . . . . . . 364 17.2.1 Installationsbeginn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365 17.3 Administrationsaufgaben nach der Installation . . . . . . . . . . . . . . . . 371 17.3.1 Erstellung der Servergruppen und Registrierung des Servers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 17.3.2 Server-Optionen setzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371 17.4 SQL Server-Migrationsprozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372 17.4.1 Aufgaben vor der Migration . . . . . . . . . . . . . . . . . . . . . . . . 373 17.4.2 Durchführung der Migration . . . . . . . . . . . . . . . . . . . . . . . 374 17.4.3 Aufgaben nach der Migration . . . . . . . . . . . . . . . . . . . . . . 374 17.5 Starten und Stoppen der SQL Server-Dienste . . . . . . . . . . . . . . . . . . 375 17.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 18 Verwalten der Systemressourcen 18.1 Dateigruppen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377 377 18.1.1 Dateigruppen sichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378 18.2 Datenbanken verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 18.2.1 Datenbank erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379 18.2.2 Datenbankoptionen sichten bzw. ändern . . . . . . . . . . . . . . 381 18.2.3 Änderung der Datenbankstruktur . . . . . . . . . . . . . . . . . . . 383 18.3 Transaktionsprotokolle verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . 385 18.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 18.5 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 386 19 Benutzerverwaltung 19.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387 387 Inhaltsverzeichnis xix 19.2 Modusauswahl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388 19.3 Verwaltung des Zugriffs auf das Datenbanksystem . . . . . . . . . . . . 389 19.3.1 Verwalten von Logins . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389 19.4 Verwaltung des Zugriffs auf einzelne Datenbanken . . . . . . . . . . . . 390 19.4.1 Rollen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391 19.5 Zugriffsberechtigungen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . 395 19.5.1 Objektberechtigungen verwalten . . . . . . . . . . . . . . . . . . . . 395 19.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 19.7 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 397 20 Archivierung und Wiederherstellung von Datenbanken 20.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 399 20.1.1 Mögliche Fehler eines Datenbanksystems . . . . . . . . . . . . . 399 20.1.2 Transaktionsprotokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 20.2 Archivierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 401 20.2.1 20.2.2 20.2.3 20.2.4 20.2.5 20.3 Volle Archivierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Differenzielle Archivierung . . . . . . . . . . . . . . . . . . . . . . . . Archivierung des Transaktionsprotokolls . . . . . . . . . . . . . Archivierung von Dateien . . . . . . . . . . . . . . . . . . . . . . . . . Dynamische Archivierung . . . . . . . . . . . . . . . . . . . . . . . . . Archivierung verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 20.3.1 Archivierung mit Hilfe von Management Studio . . . . . . . . 20.3.2 Planung der Archivierung mit Hilfe von Management Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3.3 Archivierung mit Hilfe der Transact-SQLAnweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3.4 Welche Datenbanken sollen archiviert werden und wann? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20.3.5 Vorbeugende Maßnahmen gegen den Datenverlust . . . . . . 20.3.6 Hohe Verfügbarkeit eines SQL Server-Systems . . . . . . . . . 20.4 402 402 402 404 404 405 408 408 411 413 415 Wiederherstellung von Datenbanken . . . . . . . . . . . . . . . . . . . . . . . 416 20.4.1 20.4.2 20.4.3 20.4.4 20.4.5 Automatische Wiederherstellung . . . . . . . . . . . . . . . . . . . . Vom Benutzer initiierte Wiederherstellung . . . . . . . . . . . . Wiederherstellung einer Benutzerdatenbank . . . . . . . . . . . Wiederherstellung der Masterdatenbank . . . . . . . . . . . . . . Wiederherstellung anderer Systemdatenbanken . . . . . . . . . Dusan Petkovic, SQL Server 2005, dpunkt.verlag, ISBN 978-3-89864-367-2 417 418 418 424 424 xx Inhaltsverzeichnis 20.4.6 Wiederherstellungsmodelle . . . . . . . . . . . . . . . . . . . . . . . . . 425 20.4.7 Wiederherstellung zu einer Marke . . . . . . . . . . . . . . . . . . . 427 20.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 20.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 21 Automatische Ausführung der Administrationsaufgaben 21.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 21.2 SQL Server Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 21.2.1 21.2.2 21.2.3 21.2.4 21.2.5 21.2.6 21.2.7 21.3 Starten und Konfigurieren von SQL Server Agent . . . . . . . Erstellung von Aufträgen und Operatoren . . . . . . . . . . . . . Auftragsschritte definieren . . . . . . . . . . . . . . . . . . . . . . . . . Auftrag erstellen mit Hilfe von Management Studio . . . . . . Auftragsplanung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operatoren und Benachrichtigungen erstellen . . . . . . . . . . Auftragschronik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 433 433 434 434 436 437 439 Warnungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 21.3.1 21.3.2 21.3.3 21.3.4 21.3.5 Fehlermeldungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SQL Server-Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Windows-Ereignisanzeige . . . . . . . . . . . . . . . . . . . . . . . . . . Erstellung von Warnungen . . . . . . . . . . . . . . . . . . . . . . . . . Benutzerdefinierte Warnungen . . . . . . . . . . . . . . . . . . . . . . 440 442 443 443 447 21.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 21.5 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 449 22 Maßnahmen zur Verbesserung der Performance 22.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 451 22.2 Anwendungen und die Performance . . . . . . . . . . . . . . . . . . . . . . . . 452 22.2.1 22.2.2 22.2.3 22.2.4 22.3 Benutzeranforderungen . . . . . . . . . . . . . . . . . . . . . . . . . . . Effizienz des Benutzercodes . . . . . . . . . . . . . . . . . . . . . . . . Logisches Datenbankdesign . . . . . . . . . . . . . . . . . . . . . . . . Physikalisches Datenbankdesign . . . . . . . . . . . . . . . . . . . . . 451 452 452 453 453 Datenbankmanagementsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 22.3.1 Optimierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 22.3.2 Sperren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455 Inhaltsverzeichnis 22.4 Systemressourcen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 22.4.1 22.4.2 22.4.3 22.4.4 22.5 xxi Effizienz des Prozessors . . . . . . . . . . . . . . . . . . . . . . . . . . . Arbeitsspeicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Plattenein- und -ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . Netzwerkeffizienz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456 456 457 457 Komponenten zur Überwachung der Performance . . . . . . . . . . . . . 458 22.5.1 Performance-Werkzeuge für Datenbankanwendungen . . . 458 22.5.2 SQL Server-spezifische Performance-Werkzeuge . . . . . . . . 463 22.5.3 Werkzeuge zur Überwachung der Systemressourcen . . . . . 465 22.6 Das richtige Werkzeug wählen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466 22.6.1 SQL Server Profiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 22.6.2 Optimierungsratgeber . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 22.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473 23 Tabellenpartitionierung 23.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 475 23.1.1 Weg zur Datenpartitionierung . . . . . . . . . . . . . . . . . . . . . . 476 23.1.2 Schritte für die Erstellung von Partitionen . . . . . . . . . . . . . 477 23.2 Richtlinien für partitionierte Tabellen und Indizes . . . . . . . . . . . . . 482 23.3 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483 24 Datenreplikation 24.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 485 24.1.1 Datenreplikation – ein Überblick . . . . . . . . . . . . . . . . . . . . 486 24.1.2 Publikations-, Abonnement- und Verteilungsserver . . . . . . 487 24.2 Publikationstypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 24.2.1 Transaktionale Publikation . . . . . . . . . . . . . . . . . . . . . . . . 488 24.2.2 Snapshot-Publikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 24.2.3 Merge-Publikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 24.3 Replikationsmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 24.3.1 Zentraler Verleger mit dem Verteiler . . . . . . . . . . . . . . . . . 493 24.3.2 Zentraler Abonnent mit multiplen Verlegern . . . . . . . . . . . 493 24.3.3 Multiple Verleger mit multiplen Abonnenten . . . . . . . . . . 494 Dusan Petkovic, SQL Server 2005, dpunkt.verlag, ISBN 978-3-89864-367-2 xxii 24.4 Inhaltsverzeichnis Datenreplikationen verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 24.4.1 Konfiguration des Verteilungs- und Publikationsservers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494 24.4.2 Publikationen erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496 24.4.3 Setzen des Abonnementservers . . . . . . . . . . . . . . . . . . . . . . 497 24.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 24.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 499 Teil 4 MS Analysis Services und Business Intelligence 25 Data-Warehouse-Systeme – eine Einführung 503 25.1 OLTP- und Data-Warehouse-Systeme . . . . . . . . . . . . . . . . . . . . . . . 503 25.1.1 OLTP-Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 503 25.1.2 Data-Warehouse-Systeme . . . . . . . . . . . . . . . . . . . . . . . . . . 504 25.2 Data Warehouse und Data Mart . . . . . . . . . . . . . . . . . . . . . . . . . . . 506 25.3 Entwurf eines Data Warehouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 25.3.1 Dimensionales Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . 508 25.4 Multidimensionale Würfel und Speicherungsmodi . . . . . . . . . . . . . 512 25.4.1 MOLAP, ROLAP und HOLAP . . . . . . . . . . . . . . . . . . . . . 513 25.5 Aggregationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 514 25.6 Zugriff auf Daten eines Data-Warehouse-Systems . . . . . . . . . . . . . . 514 25.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 25.8 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 515 26 MS Analysis Services 26.1 Business Intelligence Development Studio . . . . . . . . . . . . . . . . . . . . 518 26.1.1 26.1.2 26.1.3 26.1.4 26.1.5 26.1.6 26.2 Projektmappen-Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . Erstellung einer Datenquelle . . . . . . . . . . . . . . . . . . . . . . . Erstellung einer Datenquellensicht . . . . . . . . . . . . . . . . . . . Würfel erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aggregationen entwerfen . . . . . . . . . . . . . . . . . . . . . . . . . . Daten des Würfels durchsuchen . . . . . . . . . . . . . . . . . . . . . 517 519 519 520 523 525 528 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528 Inhaltsverzeichnis xxiii 27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services 27.1 OLAP-Erweiterungen in Transact-SQL . . . . . . . . . . . . . . . . . . . . . 531 27.1.1 27.1.2 27.1.3 27.1.4 27.1.5 CUBE-Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Operator ROLLUP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Aggregat- und Rangfunktionen . . . . . . . . . . . . . . . . . . . . . TOP n-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PIVOT- und UNPIVOT-Operatoren . . . . . . . . . . . . . . . . . 531 531 535 536 541 543 27.2 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544 28 Microsoft Reporting Services 28.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 545 545 28.1.1 Berichtsmanager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 28.1.2 Berichtsserver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546 28.1.3 Berichtsserver-Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . 546 28.2 Erstellung von Berichten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 547 28.2.1 Berichtsserverprojekt-Assistent . . . . . . . . . . . . . . . . . . . . . 547 28.2.2 Parametrisierte Berichte . . . . . . . . . . . . . . . . . . . . . . . . . . . 554 28.3 Ausführung und Verwaltung von Berichten . . . . . . . . . . . . . . . . . . 556 28.4 Berichte anstoßen bzw. verteilen . . . . . . . . . . . . . . . . . . . . . . . . . . 557 28.4.1 Bedarfsgesteuerte Berichte . . . . . . . . . . . . . . . . . . . . . . . . . 558 28.4.2 Abonnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558 28.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560 Teil 5 Semistrukturierte und unstrukturierte Daten 29 XML – ein Überblick 563 29.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 29.1.1 World Wide Web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563 29.1.2 XML und verwandte Sprachen . . . . . . . . . . . . . . . . . . . . . 564 29.2 XML – Grundkonzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565 29.2.1 29.2.2 29.2.3 29.2.4 29.3 XML-Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XML-Namensräume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . DTD (Document Type Definition) . . . . . . . . . . . . . . . . . . XML-Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567 568 568 570 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571 Dusan Petkovic, SQL Server 2005, dpunkt.verlag, ISBN 978-3-89864-367-2 xxiv Inhaltsverzeichnis 30 SQL Server und XML 30.1 Speicherung von XML-Dokumenten in relationalen Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573 30.2 XML-Datentyp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 574 30.2.1 30.2.2 30.2.3 30.2.4 30.3 Indizierung einer XML-Spalte . . . . . . . . . . . . . . . . . . . . . . Typisierte XML-Dokumente . . . . . . . . . . . . . . . . . . . . . . . XML-Schemata und SQL Server . . . . . . . . . . . . . . . . . . . . Typisierte XML-Spalten, -Variablen und -Parameter . . . . . 573 576 578 578 580 FOR XML-Klausel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 580 30.3.1 30.3.2 30.3.3 30.3.4 30.3.5 30.3.6 30.3.7 RAW-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . AUTO-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . EXPLICIT-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . PATH-Modus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Spezifische Angaben für XML-Modi . . . . . . . . . . . . . . . . . ELEMENTS-Angabe mit XSINIL . . . . . . . . . . . . . . . . . . . . ROOT-Angabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 581 582 582 584 585 586 586 30.4 Abfragesprachen für XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586 30.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 587 31 Volltextsuche 31.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 589 31.2 Volltextindex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 590 589 31.2.1 Auffüllen des Volltextindex . . . . . . . . . . . . . . . . . . . . . . . . 590 31.2.2 Erstellung eines Volltextkatalogs . . . . . . . . . . . . . . . . . . . . 592 31.2.3 Erstellung eines Volltextindex . . . . . . . . . . . . . . . . . . . . . . 592 31.3 Abfragen mit Hilfe eines Volltextindex . . . . . . . . . . . . . . . . . . . . . . 593 31.3.1 31.3.2 31.3.3 31.3.4 31.3.5 31.4 Vorbereitungsschritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FREETEXT-Prädikat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . CONTAINS-Prädikat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FREETEXTTABLE-Funktion . . . . . . . . . . . . . . . . . . . . . . CONTAINSTABLE-Funktion . . . . . . . . . . . . . . . . . . . . . . 593 595 596 598 599 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600 Anhang Index 603