Holger Schmeling © 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. h D mit dem Microsoft SQL Server 2005 HANSER 1 1.1 1.2 1.3 1.4 1.5 Einleitung Was vermittelt dieses Buch? Für wen ist dieses Buch? Wo finde ich was? Welche Voraussetzungen werden benötigt? Danksagung 2 , 2.1 SQL Server 2005-Architektur SQL Server 2005-Komponenten 2.1.1 Das SQL Server-Datenbankmodul 2.1.2 SQL Server Replication Services 2.1.3 SQL Server Notification Services 2.1.4 SQL Server Reporting Services 2.1.5 SQL Server Analysis Services 2.1.6 SQL Server Integration Services 2.1.7 Verwaltungswerkzeuge 2.1.8 Entwicklungswerkzeuge 2.1.9 Der SQL Server Agent SQL Server-Editionen Systemdatenbanken 2.3.1 Die master-Datenbank 2.3.2 Die model-Datenbank 2.3.3 Die msdb-Datenbank 2.3.4 Die tempdb-Datenbank 2.3.5 Weitere Datenbanken Die Struktur einer SQL Server-Datenbank 2.4.1 Datenbanken 2.4.2 Datenbankobjekte ., Zusammenfassung 2.2 2.3 2.4 2.5 1 1 2 3 5 6 : , 9 9 10 12 12 12 13 13 14 14 14 15 16 16 16 17 17 17 18 19 19 21 Inhalt 3 SQL Server-Verwaltungswerkzeuge 23 3.1 3.2 3.3 SQL Server-Konfigurations-Manager SQL Server-Oberflächenkonfiguration SQL Server Management Studio 3.3.1 Start und Anmeldung 3.3.2 Bereiche des Hauptfensters 3.3.3 Datenbankprojekte erstellen Business Intelligence Development Studio SQL Server Profiler Datenbankmodul-Optimierungsratgeber Sqlcmd SQL Server-Onlinedokumentation Zusammenfassung 24 25 27 27 30 47 51 52 „.58 61 63 64 3.4 3.5 3.6 3.7 3.8 3.9 4 Transact SQL-Grundlagen 4.1 4.2 4.3 4.4 4.5 4.6 Das Relationenmodell SQL mit System T-SQL-Stapel (Batches) SQL-Datentypen ,. T-SQL-Ausdrücke und -Operatoren Datenbanken verwalten 4.6.1 Datenbank erzeugen „_..„..„, 4.6.2 Datenbankrändern 4.6.3 Datenbank löschen Schemas verwenden 4.7.1 Namensauflösung 4.7.2 Synonyme Tabellen entwerfen 4.8.1 Tabellen anlegen 4.8.2 Tabellen ändern 4.8.3 Identität/Primärschlüssel 4.8.4 Weitere Einschränkungen 4.8.5 Berechnete Spalten 4.8.6 Ein Wiedersehen mit CREATE TABLE 4.8.7 Beziehungen festlegen ; 4.8.8 Zusammenfassung zu Einschränkungen 4.8.9 Tabellen löschen 4.8.10 Datenbankdiagramme 4.8.11 Temporäre Tabellen INSERT - Daten einfügen SELECT - Daten abfragen : 4.10.1 Filtern: Projektion und Selektion Informationen ausgeben mit PRINT Ausführen von gespeicherten Prozeduren UPDATE - Daten ändern DELETE - Daten löschen 4.7 4.8 4.9 4.10 4.11 4.12 4.13 4.14 , 65 -. '. 66 67 69 71 76 79 79 82 84 84 87 89 90 90 93 95 98 102 103 104 107 107 108 109 110 111 115 122 122 123 125 4.15 4.16 4.17 4.18 4.19 4.20 4.21 4.22 SQL-Funktionen 4.15.1 Systemfunktionen 4.15.2 Konfigurationsfunktionen 4.15.3 Metadatenfunktionen 4.15.4 Numerische Funktionen 4.15.5 Funktionen zur Zeichenkettenbearbeitung 4.15.6 Konvertierungsfunktionen 4.15.7 Datums- und Zeitfunktionen 7 4.15.8 Sonstige Funktionen und Operatoren Die Beispieldatenbank AdventureWorks Sichten 4.17.1 Ändern von Sichten 4.17.2 Aktualisierung von Daten Daten einfügen mit SELECT 4.18.1 1NSERT und SELECT 4.18.2 SELECT 1NTO Null 4.19.1 Dreiwertige Logik 4.19.2 Arithmetische Operationen 4.19.3 Operationen mit Zeichenketten 4.19.4 Hinweise für die Verwendung von NULL 4.19.5 Spezielle Funktionen für NULL-Werte Fehlerbehandlung in T-SQL Komplexe Abfragen mit SELECT 4.21.1 Mengenoperationen mit SQL 4.21.2 Abfragen über mehrere Tabellen 4.21.3 Aggregatfunktionen und GROUP BY 4.21.4 Rangfolgefunktionen 4.21.5 Korrelierende Unterabfragen 4.21.6 Abgeleitete Tabellen , 4.21.7 Allgemeine Tabellenausdrücke 4.21.8 PIVOT und UNPIVOT 4.21.9 OUTPUT 4.21.10 APPLY Zusammenfassung ~ '. '. 126 127 129 130 132 136 142 144 149 153 154 156 156 158 158 158 159 160 163 164 166 167 169 170 170 172 179 186 191 192 193 198 202 203 205 5 Transaktionen und Sperren 207 5.1 5.2 Eigenschaften von Transaktionen Start und Ende einer Transaktion 5.2.1 Transaktionsmodi des SQL Servers Sperren ; 5.3.1 Sperrbare Ressourcen 5.3.2 Sperrtypen r 5.3.3 Deadlocks./ Isolationsstufen 5.4.1 READ UNCOMMITTED : 207 210 211 213 214 217 219 224 224 5.3 5.4 .- Inhalt 5.5 5.6 5.7 5.8 6 6.1 6.2 6.3 6.4 6.5 7 7.1 7.2 7.3 5.4.2 READ COMMITTED 5.4.3 REPEATABLE READ 5.4.4 SNAPSHOT 5.4.5 SERIALIZABLE 5.4.6 Abschließende Betrachtungen zu Isolationsstufen Sperren explizit anfordern - Sperrhinweise Das Transaktionsprotokoll 5.6.1 Abschneiden des Protokolls 5.6.2 Verhalten im Fehlerfall Hinweise zur Verwendung von Transaktionen Zusammenfassung 225 226 227 228 228 229 232 233 234 234 236 Administration für Datenbankentwickler Datensicherung und -Wiederherstellung 6.1.1 Wiederherstellungsmodelle 6.1.2 Prüfen der Konsistenz einer Datenbank 6.1.3 Vollständige Datenbanksicherung 6.1.4 Sicherung des Transaktionsprotokolls 6.1.5 Sichern der Systemdatenbanken Wiederherstellung von Datenbanken 6.2.1 Automatische Wiederherstellung bei Systemstart 6.2.2 Wiederherstellung der Systemdatenbanken .\ Zugriffskontrolle ...-.r.: 6.3.1 SQL Server-Anmeldungen 6.3.2 Anmeldungen hinzufügen 6.3.3 Anmeldungen löschen 6.3.4 Berechtigungen vergeben 6.3.5 Vordefinierte Anmeldekonten 6.3.6 Datenbankbenutzer 6.3.7 Datenbankrollen 6.3.8 Rechte erteilen und entziehen Überwachung von SQL Server 6.4.1 Was kann überwacht werden? 6.4.2 Überwachung mit dem SQL Server Management Studio 6.4.3 Überwachung mit dem SQL Server Profiler 6.4.4 Überwachung mit dem Windows-Systemmonitor 6.4.5 Verwendung von T-SQL zur Überwachung Zusammenfassung 237 237 240 242 242 248 251 252 255 255 256 257 259 261 261 262 263 265 266 270 271 . 272 276 276 277 286 T-SQL-Programmierung Variablen 7.1.1 Deklaration von Variablen 7.1.2 Wertzuweisung an Variablen 7.1.3 Besondere Variablentypen Dynamisches SQL Ablaufsteuerung .' : 287 287 287 288 290 292 293 7.4 7.5 7.6 7.7 7.8 8 8.1 8.2 8.3 8.4 7.3.1 Anweisungsblöcke 7.3.2 Bedingte Ausführung von Anweisungen 7.3.3 Wiederholte Ausführung von Anweisungen Cursor 7.4.1 Cursor erzeugen 7.4.2 Einen Cursor durchlaufen - Daten abrufen 7.4.3 Daten aktualisieren 7.4.4 Hinweise zur Verwendung von Cursorn." Gespeicherte Prozeduren 7.5.1 Warum gespeicherte Prozeduren? 7.5.2 Erstellung von gespeicherten Prozeduren 7.5.3 Verwenden von Parametern 7.5.4 Der Rückgabewert einer gespeicherten Prozedur 7.5.5 Die gespeicherte Systemprozedur sp_procoption 7.5.6 EXECUTE und INSERT 7.5.7 Erweitertes Beispiel: PDF-Dateien einlesen Benutzerdefinierte Funktionen 7.6.1 Skalarwertfunktionen 7.6.2 Tabellenwertfunktionen Trigger ~ 7.7.1 DML-Trigger 7.7.2 Hinweise zur Verwendung von Triggern 7.7.3 DDL-frigger Zusammenfassung XML-Integration Tabellen im XML-Format darstellen: FOR XML 8.1.1 FORXMLRAW 8.1.2 FOR XML AUTO 8.1.3 FOR XML EXPLICIT 8.1.4 FORXMLPATH 8.1.5 FOR XML-Optionen 8.1.6 Noch einmal FOR XML PATH XML-Daten in Tabellenform abbilden: OPENXML Der XML-Datentyp 8.3.1 Ungetypte XML-Daten 8.3.2 Getypte XML-Daten 8.3.3 query 8.3.4 exist 8.3.5 value 8.3.6 nodes '. 8.3.7 modify 8.3.8 XML-Indizes : Zusammenfassung ....„ .'. , = 293 293 294 297 297 300 305 306 306 307 307 311 314 314 316 317 320 320 323 325 326 332 333 338 339 339 341 342 344 352 355 358 367 372 375 376 379 382 383 384 388 391 395 9 SQL Server Service Broker 9.1 9.3 9.4 Architektur 9.1.1 Service Oriented Architecture (SOA) 9.1.2 Service Broker-Kommunikation 9.1.3 Service Broker-Komponenten -. Erstellung von Anwendungen 9.2.1 T-SQL-Kommandos für eine Service Broker-Kommunikation 9.2.2 Eine Service Broker-Beispielanwendung 9.2.3 Service Broker-Aktivierung Überwachung von Server- und Datenbankobjekten Zusammenfassung 10 Datenbankentwicklung mit .NET 423 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 SQL Server und die .NET CLR Sicherheitsaspekte Assemblys Der Namensraum Microsoft.SqlServer.Server Datentypen - der Namensraum System.Data.SqlTypes Datenbankprojekte mit Visual Studio 2005 erstellen 10.6.1 Erstellen eines Datenbankprojektes 10.6.2 Erstellen von gespeicherten Prozeduren 10.6.3 Erstellen von benutzerdefinierten Funktionen 10.6.4 Erstellen-benutzerdefinierter Typen 10.6.5 Erstellen von benutzerdefinierten Aggregaten 10.6.6 Erstellen von Triggern 10.6.7 Debuggen von CLR-Objekten Noch einmal: Sicherheit T-SQLoder.NET? Zusammenfassung 423 425 426 430 431 431 432 434 442 445 457 460 462 463 467 468 11 Web Services mit dem SQL Server 469 11.1 11.2 Was sind Web Services? < . SOAP-Endpunkte 11.2.1 Syntax zur Erstellung eines HTTP-Endpunktes Reservierung von HTTP-Namensräumen 11.3.1 Implizite Reservierung 11.3.2 Explizite Reservierung 11.3.3 Löschen einer expliziten Reservierung Aufbau der URL für einen Endpunkt Einen Web Service erstellen und verwenden 11.5.1 Den AdWrksServicePoint-Endpankt erzeugen 11.5.2 Sicherheitsaspekte 11.5.3 Den Web Service verwenden Zusammenfassung 469 470 471 473 474 475 475 476 476 477 478 481 486 9.2 11.3 11.4 11.5 11.6 397 : 397 398 399 401 402 402 403 417 „...418 421 12 Optimierung von Abfragen 487 12.1 12.2 12.3 12.4 Die Speicherverwaltung von SQL Server Ausführung von Abfragen durch SQL Server Erstellen einer Testdatenbank Verwenden von Indizes 12.4.1 Tabellen ohne Index - Heap 12.4.2 Gruppierte Indizes 12.4.3 Nicht gruppierter Index auf einem Heap 12.4.4 Nicht gruppierter Index auf einem gruppierten Index 12.4.5 Erzeugen von Indizes .„ 12.4.6 Löschen von Indizes 12.5 Messen der Leistung 12.5.1 Messen mit der Stoppuhr 12.5.2 Statistische Werte 12.5.3 Ausfuhrungspläne 12.5.4 Der SQL Server Profiler 12.5.5 Windows-Systemmonitor 12.5.6 Verbindung von Ablaufverfolgung und Logfile 12.6 Beispiele für die Optimierung 12.7 Weitere Hinweise für Indizes 12.7.1 Index-Selektivität 12.7.2 Index-Fragmentierung 12.7.3 Fehlende Indizes 12.7.4 Nicht verwendete Indizes 12.8 Der Datenbankmodul Optimierungsratgeber 12.9 Tipps zur Abfrageoptimierung 12.10 Zusammenfassung , ' 488 489 490 491 491 492 494 495 497 501 501 502 503 505 511 517 518 521 528 528 529 529 531 532 535 538 j 13 Anwendungen mit den Notification Services erstellen 539 13.1 13.2 13.3 13.4 Einführung in SQL Server Notification Services ..Architektur Erstellen von Notification Services-Anwendungen Eine Notification Services-Beispielanwendung 13.4.1 Instance Configuration File (ICF) 13.4.2 Application Definition File (ADF) 13.4.3 Erzeugen und Ausführen der NS-Anwendung 13.4.4 Überprüfen der erzeugten NS-Datenbanken und -Objekte 13.4.5 Erzeugen von Abonnements und Ereignissen Zusammenfassung 539 540 543 544 544 547 554 558 559 572 13.5 Literatur 573 Register 575