Inhalt | 7 |
Vorwort | 13 |
1 Der SQL Server 2014 stellt sich vor | 17 |
1.1 SQL Server – wer ist das? | 17 |
1.1.1 Der SQL Server im Konzert der Datenbanksysteme | 17 |
1.1.2 Entscheidungsszenarien für Datenbanksysteme | 20 |
1.1.3 Komponenten einer Datenbankanwendung | 22 |
1.1.4 SQL Server – das Gesamtkonzept | 25 |
1.2 Versionen und Editionen des SQL Servers | 27 |
1.3 SQL Server 2014 installieren | 31 |
1.4 Datenbanken installieren und nutzen | 53 |
1.5 Gratis: die Express Edition | 58 |
1.6 SQL Server Feature Pack | 59 |
2 Die grafischen Tools des SQL Server 2014 | 61 |
2.1 Die Tools im Überblick | 61 |
2.2 Das Management Studio | 63 |
2.3 Das Kommandozeilentool: SQLCMD | 79 |
2.4 Der Konfigurations-Manager | 81 |
2.5 Das SQL Server-Installationscenter | 83 |
2.6 Der Profiler | 83 |
2.7 Der Datenbankoptimierungsratgeber | 84 |
2.8 Die SQL Server Data Tools | 86 |
2.9 Der Import/Export-Assistent | 89 |
2.10 Der SQL Server Migration Assistant | 97 |
3 Eine neue Datenbank erstellen | 101 |
3.1 Erstellen einer neuen Datenbank | 101 |
3.1.1 Bestandteile einer Datenbank | 101 |
3.1.2 Datenbank mit dem grafischen Tool anlegen | 105 |
3.1.3 Datenbank über eine SQL-Anweisung erstellen | 112 |
3.1.4 Datenbank mit Filestream ausstatten | 113 |
3.2 Tabellen in der Datenbank erstellen | 118 |
3.2.1 Tabellenfelder definieren | 119 |
3.2.2 Spalteneigenschaften | 123 |
3.2.3 Constraints | 126 |
3.2.4 Indizierung | 135 |
3.2.5 Erste Daten erfassen | 143 |
3.3 Datenbankdiagramme einsetzen | 145 |
3.4 Richtlinien für Benennungsregeln einsetzen | 149 |
3.5 Was Sie noch wissen sollten ..... | 154 |
3.5.1 Tabellen in anderen Dateigruppen speichern | 154 |
3.5.2 Tabellen direkt mit DDL-Anweisungen erstellen | 155 |
3.5.3 Gefahren der grafischen Oberfläche | 157 |
3.5.4 Berechnete Spalten integrieren | 160 |
3.5.5 Objekte und Datenbanken skripten | 162 |
3.6 Tabelle mit Filestream und FileTable | 166 |
3.6.1 Tabelle mit Filestream erstellen | 166 |
3.6.2 Objekte in einer FileTable speichern | 172 |
3.7 Beispieldatenbank generieren | 186 |
3.8 Speicheroptimierte Tabellen | 187 |
3.8.1 Datenbank mit In-Memory-Filegroup erstellen | 187 |
3.8.2 Speicheroptimierte Tabelle anlegen | 188 |
3.8.3 Speichernutzung beschränken | 192 |
4 SQL – Zugriff auf Daten | 195 |
4.1 Einsatz des Abfrage-Designers | 196 |
4.1.1 Die Bereiche des Abfrage-Designers | 197 |
4.1.2 Erstellen einer Abfrage | 201 |
4.2 Sichten für den Datenzugriff gestalten | 214 |
4.2.1 Gründe für den Einsatz von Sichten | 214 |
4.2.2 Erstellen einer Sicht | 215 |
4.2.3 Daten aus einer Sicht abrufen | 217 |
4.3 SQL-Anweisungen verwenden | 219 |
4.3.1 Data Query Language (DQL) | 220 |
4.3.2 Data Manipulation Language (DML) | 228 |
4.3.3 Die MERGE-Anweisung | 229 |
4.3.4 Den Abfrage-Designer im Abfrageeditor einsetzen | 233 |
4.4 Abfragen mit Geodaten | 235 |
4.4.1 Typen im Geodatenmodell | 236 |
4.4.2 Geodaten in Tabellen speichern und verwenden | 242 |
4.4.3 Index für räumliche Daten | 257 |
5 Transact-SQL – die Sprache zur Serverprogrammierung | 261 |
5.1 Bestandteile und Funktionalität |
263 |
5.1.1 Variablen und Datentypen | 263 |
5.1.2 Benutzerdefinierte Tabellentypen | 270 |
5.1.3 Funktionen | 272 |
5.1.4 Kontrollstrukturen | 292 |
5.1.5 Cursor für Datenzugriffe einsetzen | 309 |
5.2 Transaktionen gezielt steuern | 315 |
5.2.1 Automatische Transaktionen | 315 |
5.2.2 Explizite und implizite Transaktionen | 316 |
5.2.3 Benannte Transaktionen | 322 |
5.3 SET-Optionen verwenden | 323 |
5.4 Fehlerbehandlung in den Code einbauen | 331 |
5.5 Sequenzen | 337 |
5.6 Paging mit OFFSET und FETCH | 339 |
5.7 Window-Funktionen | 341 |
6 Gespeicherte Prozeduren, Funktionen und Trigger | 343 |
6.1 Gespeicherte Prozeduren programmieren | 344 |
6.1.1 Aufbau einer gespeicherten Prozedur | 345 |
6.1.2 Erzeugen einer gespeicherten Prozedur | 347 |
6.1.3 Einfache gespeicherte Prozeduren | 355 |
6.1.4 Gespeicherte Prozeduren mit Eingabeparametern | 357 |
6.1.5 Ergebnisrückgabe von Prozeduren | 360 |
6.1.6 Cursor in gespeicherten Prozeduren nutzen | 370 |
6.1.7 Transaktionen in Prozeduren | 377 |
6.1.8 Table-Valued Parameter einsetzen | 380 |
6.1.9 Systemintern kompilierte gespeicherte Prozeduren | 384 |
6.1.1 Gespeicherte Prozeduren aus Client-Anwendungen heraus aufrufen | 389 |
6.2 Mit Triggern automatisieren | 403 |
6.2.1 DML-Trigger: Insert, Update, Delete | 404 |
6.2.2 Trigger löschen | 431 |
6.2.3 DDL-Trigger | 431 |
6.3 Benutzerdefinierte Funktionen implementieren | 438 |
6.3.1 Skalarwertfunktionen | 438 |
6.3.2 Inline-Funktionen | 444 |
6.3.3 Tabellenwertfunktionen | 445 |
6.4 Debuggen | 451 |
6.4.1 Voraussetzungen für das Debuggen | 451 |
6.4.2 Debuggen einer gespeicherten Prozedur | 453 |
6.4.3 Debuggen von Triggern | 457 |
6.4.4 Debuggen von Funktionen | 459 |
7 SQL Server CLR-Integration | 461 |
7.1 Mit im Boot: .NET Framework | 462 |
7.1.1 Integration mit dem Visual Studio | 464 |
7.2 CLR-Aktivierung | 467 |
7.2.1 Code auf den Server bringen: Assembly | 468 |
7.3 .NET User-Defined Functions | 471 |
7.4 .NET Stored Procedures | 477 |
7.4.1 Datenzugriff aus der CLR heraus | 477 |
7.4.2 Prozeduren mit Werterückgabe | 478 |
7.4.3 Zugriff auf externe Daten | 482 |
7.4.4 .NET-Trigger | 486 |
7.5 User-Defined Aggregates (UDA) | 492 |
7.6 Externe Assemblies verwenden | 497 |
7.7 Verwalten des Servers mit SMO | 502 |
7.8 Übrigens: Debuggen | 506 |
7.8.1 Debuggen einer T-SQL Stored Procedure | 507 |
7.8.2 Debuggen einer .NET Stored Procedure | 508 |
8 Data Tier Applications und SQL Server Data Tools | 511 |
8.1 Datenebenenanwendungen | 511 |
8.1.1 DAC über Management Studio erstellen | 512 |
8.1.2 Eine DAC auf dem SQL Server bereitstellen | 514 |
8.1.3 Aktualisieren einer DAC | 516 |
8.1.4 Entfernen einer DAC | 518 |
8.1.5 Von DACPAC zu BACPAC | 519 |
8.1.6 Erstellen einer DAC mit dem Visual Studio | 524 |
8.2 Die SQL Server Data Tools | 524 |
8.2.1 Ein neues Datenbankprojekt erstellen | 525 |
8.2.2 Datenbankobjekte erstellen | 527 |
8.2.3 Datenbankprojekt bereitstellen | 530 |
8.2.4 Schemavergleich | 534 |
8.2.5 Datenbank in ein Datenbankprojekt importieren | 538 |
8.2.6 Ersatz für das Management Studio? | 540 |
9 Client-Server-Datenbank verwalten | 543 |
9.1 Anfügen und Trennen von Datenbanken | 543 |
9.1.1 Trennen einer Datenbank | 543 |
9.1.2 Anfügen einer Datenbank | 546 |
9.1.3 Option Automatisch schließen | 551 |
9.2 Datenbank sichern | 552 |
9.2.1 Sicherungsvarianten | 552 |
9.2.2 Sicherungsziele | 553 |
9.2.3 Sicherung mit dem Management Studio | 556 |
9.2.4 Sicherung über TRANSACT-SQL | 561 |
9.2.5 Zeitgesteuerte Sicherung mit dem SQL Server-Agent | 563 |
9.2.6 Zeitgesteuerte Sicherung mit der Express Edition | 568 |
9.2.7 Datenbank wiederherstellen | 571 |
9.2.8 Einsatz der Zeitachse beim Wiederherstellen | 574 |
9.2.9 Wiederherstellung über Transact-SQL | 579 |
9.2.10 Desaster Recovery | 580 |
9.2.11 Recovery mit FILESTREAM | 587 |
9.3 Datenänderungen protokollieren | 589 |
9.3.1 Change Data Capture | 589 |
9.4 Mit mehreren Instanzen arbeiten | 595 |
9.4.1 Standardinstanzen und benannte Instanzen | 595 |
9.4.2 Zugriff auf Instanzen steuern | 597 |
10 Sicherheit und Zugriffsberechtigungen | 601 |
10.1 Authentifizierungsmodi – Anmeldungen und Benutzer | 601 |
10.1.1 Windows-Authentifizierung | 603 |
10.1.2 Gemischter Modus | 603 |
10.1.3 Anmeldung und Benutzer | 604 |
10.2 Berechtigungen | 605 |
10.3 Rollen | 606 |
10.3.1 Serverrollen | 606 |
10.3.2 Datenbankrollen | 609 |
10.3.3 Anwendungsrollen | 610 |
10.4 Anmeldeinformationen (Credentials) | 610 |
10.5 Schema | 612 |
10.6 Verwaltung im Management Studio | 615 |
10.6.1 Serveranmeldung hinzufügen | 615 |
10.6.2 Schema anlegen | 620 |
10.6.3 Datenbankbenutzer hinzufügen | 621 |
10.6.4 Rollen in einer Datenbank anlegen | 624 |
10.7 Berechtigungen vergeben | 626 |
10.7.1 Berechtigungen auf Datenbankebene | 626 |
10.7.2 Berechtigungen auf Serverebene | 632 |
10.8 Lösungen mit T-SQL | 634 |
10.8.1 Sicherheitsobjekte anlegen | 634 |
10.8.2 Generische Skripte | 639 |
10.9 Contained Databases | 640 |
10.10 Administratorzugriff wiederherstellen | 646 |
10.11 Indirekte Zugriffe verwalten | 649 |
10.11.1 Datenzugriffe über Sichten | 649 |
10.11.2 Sicherheit mit Prozeduren erhöhen | 651 |
10.12 Zugriff auf andere Server | 657 |
10.12.1 SQL Server als Verbindungsserver | 658 |
10.12.2 Verbindungsserver mit Fremdprodukten | 665 |
11 Erweiterte Funktionalitäten | 669 |
11.1 Datenbank-E-Mail | 669 |
11.1.1 Einrichten von Datenbank-E-Mail | 670 |
11.1.2 E-Mails aus der Anwendung heraus versenden | 676 |
11.1.3 Varianten des E-Mail-Versands | 678 |
11.1.4 Mailbenachrichtigung für Agent-Aufträge | 684 |
11.2 Integration Services | 689 |
11.2.1 Datenabgleich mit IS | 690 |
11.2.2 Pakete ausführen und auf den Server bringen | 709 |
11.2.3 SSIS-Projekte auf den Server bringen | 711 |
11.3 PowerPivot | 717 |
11.3.1 Was ist PowerPivot? | 717 |
11.3.2 PowerPivot für Excel | 718 |
Anhang | 743 |
A.1 Die Tabellen der Datenbank WAWI | 743 |
Index | 751 |