Dirk Mertins, Jörg Neumann, Andreas Kühnel
SQL Server 2008 R2 - das Programmierhandbuch ; [inkl. Migration von SQL Server 2005]
2 Angebote ab € 2,90 €
Dirk Mertins, Jörg Neumann, Andreas Kühnel
SQL Server 2008 R2 - das Programmierhandbuch ; [inkl. Migration von SQL Server 2005]
- Buch
Produktdetails
- Verlag: Rheinwerk
- ISBN-13: 9783836216937
- Artikelnr.: 31176765
Vorwort 25
1 Installation und Aktualisierung von SQL Server 2008 R2 27
1.1 Überblick über die verfügbaren SQL-Server-2008-R2-Versionen 27
1.2 Installationsvoraussetzungen 29
1.3 Installation von SQL Server 2008 R2 30
1.4 Installation der SQL-Server-Beispieldatenbanken 41
1.5 Aktualisierung auf SQL Server 2008 R2 44
2 Datenbankgrundlagen 57
2.1 Server und Client 57
2.2 Relationale Datenbanken 58
2.3 Datenbankmanagementsystem 77
2.4 Integritätsarten 80
3 Logischer Datenbankentwurf 83
3.1 Grundlagen des Datenbankentwurfs 83
3.2 Normalisierungsregeln (Normalformen) 84
3.3 Normalisierung in der Praxis 91
3.4 Denormalisierung 95
3.5 Entity-Relationship-Diagramme 96
4 Die Oberfläche von SQL Server 99
4.1 Das SQL Server Management Studio 99
4.2 Das Bearbeiten von SQL-Anweisungen im Management Studio 118
4.3 SQL-Server-Dokumentation und Hilfen zur Programmierung 134
4.4 Überblick über die SQL-Server-Dienste 146
4.5 Das Dienstprogramm sqlcmd 147
4.6 SQL-Server-Integration in die Windows PowerShell 150
4.7 Der SQL-Server-Aktivitätsmonitor 159
4.8 Berichte 161
5 Grundlegende Abfragetechniken 163
5.1 Einführung in SQL 163
5.2 SQL-Grundlagen 164
5.3 Grundlegende Operatoren 173
5.4 Einfache Abfragen 177
5.5 Auswahloperatoren 192
5.6 Aggregatfunktionen 200
5.7 Unterabfragen 203
5.8 Zusammenfassung, Gruppierung und Beschränkung von Abfrageergebnissen 206
5.9 Ausgaben mit PRINT und SELECT 218
6 Grundlagen der SQL-Programmierung 221
6.1 Das Stapeltrennzeichen GO 221
6.2 (Lokale) Variablen 223
6.3 Ablaufsteuerung 231
6.4 Fallunterscheidungen 241
6.5 Funktionen 248
6.6 Dynamische SQL-Anweisungen 260
6.7 Fehler in SQL Server und ihre Behandlung 262
6.8 Fehlerbehandlung 265
7 Mehrtabellenabfragen 283
7.1 Tabellen verknüpfen (JOIN-Anweisung) 283
7.2 Abfragen unter Verwendung mehrerer Server 293
8 Erstellen und Ändern von Datenbanken 295
8.1 Erstellen einer einfachen Datenbank 295
8.2 Einfluss der model-Datenbank auf das Erstellen neuer Datenbanken 302
8.3 Löschen von Datenbanken 304
8.4 Erstellen einer Datenbank mit mehreren Dateien 304
8.5 Nachträgliche Änderungen an Datenbankdateien 307
8.6 Erstellen einer Datenbank mit mehreren Dateigruppen 310
8.7 Datenbanken verkleinern 313
8.8 Datenbankdateien verkleinern 314
8.9 Gespeicherte Systemprozeduren (Stored Procedures) zur Datenbankverwaltung 316
8.10 Datenbank-Momentaufnahmen 316
8.11 RAID-Systeme 325
8.12 Transparente Datenverschlüsselung 329
9 Erstellen von Tabellen 333
9.1 Die grundlegende Syntax zur Tabellenerstellung 333
9.2 Tabellen ändern 348
9.3 Löschen von Tabellen 351
9.4 Implementierung der Datenintegrität 351
9.5 Anwendungsbeispiel zu Einschränkungen 358
9.6 Nachträgliche Definition von Einschränkungen 361
9.7 Verwaltung von Einschränkungen 361
9.8 Temporäre Tabellen 363
9.9 Partitionierung von Tabellen 365 10 Verwendung der räumlichen und hierarchischen Datentypen 377
10.1 Räumliche Datentypen 377
10.2 Der hierarchische Datentyp 408
11 Daten verwalten 417
11.1 Grundlegende Befehle zur Datensatzmanipulation 417
11.2 Verwendung des Zeilenkonstruktors 426
11.3 Kombinierte Auswahl-/Einfügeanweisungen 427
11.4 Die MERGE-Anweisung 429
11.5 Massenkopierprogramme 435
12 Benutzerverwaltung und Schemas 439
12.1 Authentifizierung am Server 440
12.2 Datenbankzugriff erteilen 444
12.3 Zusammenfassung von Benutzern zu Rollen 447
12.4 Rechtevergabe an Benutzer und Rollen 451
12.5 Deaktivierung und Aktivierung von Log-ins und Datenbankbenutzern 458
12.6 Vordefinierte Konten auf Server- und Datenbankebene 460
12.7 Schema 463
13 Sichten 469
13.1 Einsatz von Sichten 470
13.2 Verwalten von Sichten 472
13.3 Datenmanipulationsanweisungen auf eine Sicht 474
13.4 Systemsichten von SQL Server 480
14 Programmierung von gespeicherten Prozeduren 483
14.1 Überblick über die Verwendung von gespeicherten Prozeduren in SQL Server 483
14.2 Erstellung und Aufruf von gespeicherten Prozeduren 487
14.3 Tabellenübergabe an eine gespeicherte Prozedur 504
14.4 Optionen von gespeicherten Prozeduren 507
15 Programmierung von benutzerdefinierten Funktionen 513
15.1 Überblick über benutzerdefinierte Funktionen 513
15.2 Skalare Funktionen (Skalarwertfunktionen) 514
15.3 Inlinefunktionen (Tabellenwertfunktionen) 518
15.4 Tabellenwertfunktion mit mehreren Anweisungen 521
15.5 Ändern und Löschen von benutzerdefinierten Funktionen 524
15.6 Verwendung des Datentyps TABLE als lokale Variable 524
16 Programmierung und Einsatz von Triggern 529
16.1 DML-Trigger 529
16.2 DDL-Trigger 551
17 Nachverfolgung von Datenänderungen 557
17.1 Die neuen Möglichkeiten zur Nachverfolgung von Datenänderungen 557
17.2 Change Data Capture 558
17.3 Änderungsnachverfolgung 572
18 Ereignisbenachrichtigungen (Event Notifications) 579
18.1 Konfiguration einer Datenbank zur Nutzung des Service Brokers 580
18.2 Konfiguration des Zieldienstes 581
18.3 Erstellen einer Ereignisbenachrichtigung 583
18.4 Auslösen und Empfangen einer Ereignisbenachrichtigung 584
18.5 Service-Broker-Aktivierung 586
18.6 Löschen der erstellten Objekte 590
19 Erstellung und Einsatz eines Cursors 593
19.1 Funktionsweise eines Cursors 593
19.2 Erstellung eines Cursors 595
19.3 Öffnen eines Cursors 597
19.4 Das Abrufen von Datensätzen aus einem Cursor 598
19.5 Schließen und Löschen eines Cursors 606
19.6 Schleifenprogrammierung zum automatischen Durchlaufen eines Cursors 607
19.7 Daten in der Cursorauswahl aktualisieren und löschen 613
20 Indizes 615
20.1 Der nicht gruppierte Index auf einem Heap 616
20.2 Der gruppierte Index 620
20.3 Der nicht gruppierte Index auf einem gruppierten Index 623
20.4 Erstellung von Indizes 626
20.5 Verwaltung von Indizes 630
20.6 Statistiken 634
20.7 Planung des Einsatzes von Indizes 640
20.8 Weitere Optimierungsmöglichkeiten mit Hilfe von Indizes 649
21 Transaktionen 657
21.1 Einführung in Transaktionen 657
21.2 ACID 659
21.3 Interne Transaktionsverarbeitung 662
21.4 Verhalten bei Systemfehlern 664
21.5 Programmierung expliziter Transaktionen 665
21.6 Implizite Transaktionen 669
21.7 Wiederherstellung beim Systemstart (Recovery) 671
21.8 Sperren 673
21.9 Isolationsstufen auf Verbindungsebene 676
21.10 Sperrhinweise auf Tabellenebene 686
21.11 Informationen zu Sperren 687
21.12 Deadlocks 687
22 SQL Server als Laufzeitumgebung für .NET 693
22.1 Die Programmiermodelle im Vergleich 693
22.2 Die CLR-Integration im Detail 697
22.3 Der Hosting Layer 701
22.4 Verwaltung von Assemblies 704
22.5 Sicherheitsstufen 705
23 .NET-Programmierung 707
23.1 CLR-Unterstützung aktivieren 707
23.2 CLR-Prozeduren und Funktionen 709
23.3 Gespeicherte Prozeduren 714
23.4 Benutzerdefinierte Funktionen 722
23.5 Serverseitiger Datenzugriff mit ADO.NET 730
23.6 Pipes 732
23.7 Impersonalisierung 740
23.8 Benutzerdefinierte Typen 744
23.9 Benutzerdefinierte Aggregate 761
23.10 Benutzerdefinierte Trigger 768
23.11 Administration und Monitoring von CLR-Objekten 776
24 T-SQL: Neuerungen und Verbesserungen der Kompatibilität 781
24.1 CROSS APPLY und OUTER APPLY 783
24.2 Kreuztabellen mit PIVOT erstellen 785
24.3 Common Table Expressions 792
24.4 Fehlerbehandlung 801
24.5 Ranking- und Windowing-Funktionen 808
24.6 Die OUTPUT-Klausel 815
24.7 Die TABLESAMPLE-Klausel 817
24.8 EXCEPT- und INTERSECT-Statement 819
24.9 Tabellenwertparameter 820
25 Einsatz von XML in der Datenbank 825
25.1 Warum XML? 826
25.2 HTML und XML 826
25.3 XML-Fähigkeiten von SQL Server 831
25.4 Der XML-Datentyp 831
25.5 Auf gespeicherte XML-Daten zugreifen 838
25.6 Darstellung von Abfrageergebnissen im XML-Format 849
25.7 XML-Schema ermitteln 867
25.8 XML-Daten in einem relationalen Modell speichern 868
26 Der Einsatz von Webservices in der Datenbank 873
26.1 Warum Webservices? 874
26.2 SQL Server als Webservice-Backend betreiben 875
26.3 Endpoints 876
26.4 Einen Endpoint erstellen 877
26.5 WSDL ermitteln 885
26.6 Zugriff vom Client 886
26.7 Session- und State-Management 889
26.8 Batch-Abfragen 893
26.9 Endpoints verwalten 895
27 Datenbankzugriff mit ADO.NET 897
27.1 Einleitung 897
27.2 Die Datenprovider 901
27.3 Die Verbindung zu einer Datenbank herstellen 903
27.4 Die Datenbankabfrage 926
27.5 Das SqlDataReader-Objekt 933
27.6 Parametrisierte Abfragen 942
27.7 Der SqlDataAdapter 958
27.8 Daten im lokalen Speicher -- das DataSet 971
27.9 Mit mehreren Tabellen arbeiten 997
27.10 Aktualisieren der Datenbank 1005
27.11 Objekte vom Typ DataView 1036
27.12 Stark typisierte DataSets 1042
27.13 Fazit: Typisierte oder nicht typisierte DataSets? 1068
27.14 Projekte mit grafischer Benutzeroberfläche 1069
27.15 Datenbindung 1078
28 LINQ 1095
28.1 Was ist LINQ? 1095
28.2 Neue Sprachfeatures in C# 3.0 1096
28.3 LINQ to Objects 1112
28.4 LINQ to SQL 1140
28.5 Der LINQ-to-SQL-Designer (O/R-Designer) 1166
Index 1185
1 Installation und Aktualisierung von SQL Server 2008 R2 27
1.1 Überblick über die verfügbaren SQL-Server-2008-R2-Versionen 27
1.2 Installationsvoraussetzungen 29
1.3 Installation von SQL Server 2008 R2 30
1.4 Installation der SQL-Server-Beispieldatenbanken 41
1.5 Aktualisierung auf SQL Server 2008 R2 44
2 Datenbankgrundlagen 57
2.1 Server und Client 57
2.2 Relationale Datenbanken 58
2.3 Datenbankmanagementsystem 77
2.4 Integritätsarten 80
3 Logischer Datenbankentwurf 83
3.1 Grundlagen des Datenbankentwurfs 83
3.2 Normalisierungsregeln (Normalformen) 84
3.3 Normalisierung in der Praxis 91
3.4 Denormalisierung 95
3.5 Entity-Relationship-Diagramme 96
4 Die Oberfläche von SQL Server 99
4.1 Das SQL Server Management Studio 99
4.2 Das Bearbeiten von SQL-Anweisungen im Management Studio 118
4.3 SQL-Server-Dokumentation und Hilfen zur Programmierung 134
4.4 Überblick über die SQL-Server-Dienste 146
4.5 Das Dienstprogramm sqlcmd 147
4.6 SQL-Server-Integration in die Windows PowerShell 150
4.7 Der SQL-Server-Aktivitätsmonitor 159
4.8 Berichte 161
5 Grundlegende Abfragetechniken 163
5.1 Einführung in SQL 163
5.2 SQL-Grundlagen 164
5.3 Grundlegende Operatoren 173
5.4 Einfache Abfragen 177
5.5 Auswahloperatoren 192
5.6 Aggregatfunktionen 200
5.7 Unterabfragen 203
5.8 Zusammenfassung, Gruppierung und Beschränkung von Abfrageergebnissen 206
5.9 Ausgaben mit PRINT und SELECT 218
6 Grundlagen der SQL-Programmierung 221
6.1 Das Stapeltrennzeichen GO 221
6.2 (Lokale) Variablen 223
6.3 Ablaufsteuerung 231
6.4 Fallunterscheidungen 241
6.5 Funktionen 248
6.6 Dynamische SQL-Anweisungen 260
6.7 Fehler in SQL Server und ihre Behandlung 262
6.8 Fehlerbehandlung 265
7 Mehrtabellenabfragen 283
7.1 Tabellen verknüpfen (JOIN-Anweisung) 283
7.2 Abfragen unter Verwendung mehrerer Server 293
8 Erstellen und Ändern von Datenbanken 295
8.1 Erstellen einer einfachen Datenbank 295
8.2 Einfluss der model-Datenbank auf das Erstellen neuer Datenbanken 302
8.3 Löschen von Datenbanken 304
8.4 Erstellen einer Datenbank mit mehreren Dateien 304
8.5 Nachträgliche Änderungen an Datenbankdateien 307
8.6 Erstellen einer Datenbank mit mehreren Dateigruppen 310
8.7 Datenbanken verkleinern 313
8.8 Datenbankdateien verkleinern 314
8.9 Gespeicherte Systemprozeduren (Stored Procedures) zur Datenbankverwaltung 316
8.10 Datenbank-Momentaufnahmen 316
8.11 RAID-Systeme 325
8.12 Transparente Datenverschlüsselung 329
9 Erstellen von Tabellen 333
9.1 Die grundlegende Syntax zur Tabellenerstellung 333
9.2 Tabellen ändern 348
9.3 Löschen von Tabellen 351
9.4 Implementierung der Datenintegrität 351
9.5 Anwendungsbeispiel zu Einschränkungen 358
9.6 Nachträgliche Definition von Einschränkungen 361
9.7 Verwaltung von Einschränkungen 361
9.8 Temporäre Tabellen 363
9.9 Partitionierung von Tabellen 365 10 Verwendung der räumlichen und hierarchischen Datentypen 377
10.1 Räumliche Datentypen 377
10.2 Der hierarchische Datentyp 408
11 Daten verwalten 417
11.1 Grundlegende Befehle zur Datensatzmanipulation 417
11.2 Verwendung des Zeilenkonstruktors 426
11.3 Kombinierte Auswahl-/Einfügeanweisungen 427
11.4 Die MERGE-Anweisung 429
11.5 Massenkopierprogramme 435
12 Benutzerverwaltung und Schemas 439
12.1 Authentifizierung am Server 440
12.2 Datenbankzugriff erteilen 444
12.3 Zusammenfassung von Benutzern zu Rollen 447
12.4 Rechtevergabe an Benutzer und Rollen 451
12.5 Deaktivierung und Aktivierung von Log-ins und Datenbankbenutzern 458
12.6 Vordefinierte Konten auf Server- und Datenbankebene 460
12.7 Schema 463
13 Sichten 469
13.1 Einsatz von Sichten 470
13.2 Verwalten von Sichten 472
13.3 Datenmanipulationsanweisungen auf eine Sicht 474
13.4 Systemsichten von SQL Server 480
14 Programmierung von gespeicherten Prozeduren 483
14.1 Überblick über die Verwendung von gespeicherten Prozeduren in SQL Server 483
14.2 Erstellung und Aufruf von gespeicherten Prozeduren 487
14.3 Tabellenübergabe an eine gespeicherte Prozedur 504
14.4 Optionen von gespeicherten Prozeduren 507
15 Programmierung von benutzerdefinierten Funktionen 513
15.1 Überblick über benutzerdefinierte Funktionen 513
15.2 Skalare Funktionen (Skalarwertfunktionen) 514
15.3 Inlinefunktionen (Tabellenwertfunktionen) 518
15.4 Tabellenwertfunktion mit mehreren Anweisungen 521
15.5 Ändern und Löschen von benutzerdefinierten Funktionen 524
15.6 Verwendung des Datentyps TABLE als lokale Variable 524
16 Programmierung und Einsatz von Triggern 529
16.1 DML-Trigger 529
16.2 DDL-Trigger 551
17 Nachverfolgung von Datenänderungen 557
17.1 Die neuen Möglichkeiten zur Nachverfolgung von Datenänderungen 557
17.2 Change Data Capture 558
17.3 Änderungsnachverfolgung 572
18 Ereignisbenachrichtigungen (Event Notifications) 579
18.1 Konfiguration einer Datenbank zur Nutzung des Service Brokers 580
18.2 Konfiguration des Zieldienstes 581
18.3 Erstellen einer Ereignisbenachrichtigung 583
18.4 Auslösen und Empfangen einer Ereignisbenachrichtigung 584
18.5 Service-Broker-Aktivierung 586
18.6 Löschen der erstellten Objekte 590
19 Erstellung und Einsatz eines Cursors 593
19.1 Funktionsweise eines Cursors 593
19.2 Erstellung eines Cursors 595
19.3 Öffnen eines Cursors 597
19.4 Das Abrufen von Datensätzen aus einem Cursor 598
19.5 Schließen und Löschen eines Cursors 606
19.6 Schleifenprogrammierung zum automatischen Durchlaufen eines Cursors 607
19.7 Daten in der Cursorauswahl aktualisieren und löschen 613
20 Indizes 615
20.1 Der nicht gruppierte Index auf einem Heap 616
20.2 Der gruppierte Index 620
20.3 Der nicht gruppierte Index auf einem gruppierten Index 623
20.4 Erstellung von Indizes 626
20.5 Verwaltung von Indizes 630
20.6 Statistiken 634
20.7 Planung des Einsatzes von Indizes 640
20.8 Weitere Optimierungsmöglichkeiten mit Hilfe von Indizes 649
21 Transaktionen 657
21.1 Einführung in Transaktionen 657
21.2 ACID 659
21.3 Interne Transaktionsverarbeitung 662
21.4 Verhalten bei Systemfehlern 664
21.5 Programmierung expliziter Transaktionen 665
21.6 Implizite Transaktionen 669
21.7 Wiederherstellung beim Systemstart (Recovery) 671
21.8 Sperren 673
21.9 Isolationsstufen auf Verbindungsebene 676
21.10 Sperrhinweise auf Tabellenebene 686
21.11 Informationen zu Sperren 687
21.12 Deadlocks 687
22 SQL Server als Laufzeitumgebung für .NET 693
22.1 Die Programmiermodelle im Vergleich 693
22.2 Die CLR-Integration im Detail 697
22.3 Der Hosting Layer 701
22.4 Verwaltung von Assemblies 704
22.5 Sicherheitsstufen 705
23 .NET-Programmierung 707
23.1 CLR-Unterstützung aktivieren 707
23.2 CLR-Prozeduren und Funktionen 709
23.3 Gespeicherte Prozeduren 714
23.4 Benutzerdefinierte Funktionen 722
23.5 Serverseitiger Datenzugriff mit ADO.NET 730
23.6 Pipes 732
23.7 Impersonalisierung 740
23.8 Benutzerdefinierte Typen 744
23.9 Benutzerdefinierte Aggregate 761
23.10 Benutzerdefinierte Trigger 768
23.11 Administration und Monitoring von CLR-Objekten 776
24 T-SQL: Neuerungen und Verbesserungen der Kompatibilität 781
24.1 CROSS APPLY und OUTER APPLY 783
24.2 Kreuztabellen mit PIVOT erstellen 785
24.3 Common Table Expressions 792
24.4 Fehlerbehandlung 801
24.5 Ranking- und Windowing-Funktionen 808
24.6 Die OUTPUT-Klausel 815
24.7 Die TABLESAMPLE-Klausel 817
24.8 EXCEPT- und INTERSECT-Statement 819
24.9 Tabellenwertparameter 820
25 Einsatz von XML in der Datenbank 825
25.1 Warum XML? 826
25.2 HTML und XML 826
25.3 XML-Fähigkeiten von SQL Server 831
25.4 Der XML-Datentyp 831
25.5 Auf gespeicherte XML-Daten zugreifen 838
25.6 Darstellung von Abfrageergebnissen im XML-Format 849
25.7 XML-Schema ermitteln 867
25.8 XML-Daten in einem relationalen Modell speichern 868
26 Der Einsatz von Webservices in der Datenbank 873
26.1 Warum Webservices? 874
26.2 SQL Server als Webservice-Backend betreiben 875
26.3 Endpoints 876
26.4 Einen Endpoint erstellen 877
26.5 WSDL ermitteln 885
26.6 Zugriff vom Client 886
26.7 Session- und State-Management 889
26.8 Batch-Abfragen 893
26.9 Endpoints verwalten 895
27 Datenbankzugriff mit ADO.NET 897
27.1 Einleitung 897
27.2 Die Datenprovider 901
27.3 Die Verbindung zu einer Datenbank herstellen 903
27.4 Die Datenbankabfrage 926
27.5 Das SqlDataReader-Objekt 933
27.6 Parametrisierte Abfragen 942
27.7 Der SqlDataAdapter 958
27.8 Daten im lokalen Speicher -- das DataSet 971
27.9 Mit mehreren Tabellen arbeiten 997
27.10 Aktualisieren der Datenbank 1005
27.11 Objekte vom Typ DataView 1036
27.12 Stark typisierte DataSets 1042
27.13 Fazit: Typisierte oder nicht typisierte DataSets? 1068
27.14 Projekte mit grafischer Benutzeroberfläche 1069
27.15 Datenbindung 1078
28 LINQ 1095
28.1 Was ist LINQ? 1095
28.2 Neue Sprachfeatures in C# 3.0 1096
28.3 LINQ to Objects 1112
28.4 LINQ to SQL 1140
28.5 Der LINQ-to-SQL-Designer (O/R-Designer) 1166
Index 1185
Vorwort 25
1 Installation und Aktualisierung von SQL Server 2008 R2 27
1.1 Überblick über die verfügbaren SQL-Server-2008-R2-Versionen 27
1.2 Installationsvoraussetzungen 29
1.3 Installation von SQL Server 2008 R2 30
1.4 Installation der SQL-Server-Beispieldatenbanken 41
1.5 Aktualisierung auf SQL Server 2008 R2 44
2 Datenbankgrundlagen 57
2.1 Server und Client 57
2.2 Relationale Datenbanken 58
2.3 Datenbankmanagementsystem 77
2.4 Integritätsarten 80
3 Logischer Datenbankentwurf 83
3.1 Grundlagen des Datenbankentwurfs 83
3.2 Normalisierungsregeln (Normalformen) 84
3.3 Normalisierung in der Praxis 91
3.4 Denormalisierung 95
3.5 Entity-Relationship-Diagramme 96
4 Die Oberfläche von SQL Server 99
4.1 Das SQL Server Management Studio 99
4.2 Das Bearbeiten von SQL-Anweisungen im Management Studio 118
4.3 SQL-Server-Dokumentation und Hilfen zur Programmierung 134
4.4 Überblick über die SQL-Server-Dienste 146
4.5 Das Dienstprogramm sqlcmd 147
4.6 SQL-Server-Integration in die Windows PowerShell 150
4.7 Der SQL-Server-Aktivitätsmonitor 159
4.8 Berichte 161
5 Grundlegende Abfragetechniken 163
5.1 Einführung in SQL 163
5.2 SQL-Grundlagen 164
5.3 Grundlegende Operatoren 173
5.4 Einfache Abfragen 177
5.5 Auswahloperatoren 192
5.6 Aggregatfunktionen 200
5.7 Unterabfragen 203
5.8 Zusammenfassung, Gruppierung und Beschränkung von Abfrageergebnissen 206
5.9 Ausgaben mit PRINT und SELECT 218
6 Grundlagen der SQL-Programmierung 221
6.1 Das Stapeltrennzeichen GO 221
6.2 (Lokale) Variablen 223
6.3 Ablaufsteuerung 231
6.4 Fallunterscheidungen 241
6.5 Funktionen 248
6.6 Dynamische SQL-Anweisungen 260
6.7 Fehler in SQL Server und ihre Behandlung 262
6.8 Fehlerbehandlung 265
7 Mehrtabellenabfragen 283
7.1 Tabellen verknüpfen (JOIN-Anweisung) 283
7.2 Abfragen unter Verwendung mehrerer Server 293
8 Erstellen und Ändern von Datenbanken 295
8.1 Erstellen einer einfachen Datenbank 295
8.2 Einfluss der model-Datenbank auf das Erstellen neuer Datenbanken 302
8.3 Löschen von Datenbanken 304
8.4 Erstellen einer Datenbank mit mehreren Dateien 304
8.5 Nachträgliche Änderungen an Datenbankdateien 307
8.6 Erstellen einer Datenbank mit mehreren Dateigruppen 310
8.7 Datenbanken verkleinern 313
8.8 Datenbankdateien verkleinern 314
8.9 Gespeicherte Systemprozeduren (Stored Procedures) zur Datenbankverwaltung 316
8.10 Datenbank-Momentaufnahmen 316
8.11 RAID-Systeme 325
8.12 Transparente Datenverschlüsselung 329
9 Erstellen von Tabellen 333
9.1 Die grundlegende Syntax zur Tabellenerstellung 333
9.2 Tabellen ändern 348
9.3 Löschen von Tabellen 351
9.4 Implementierung der Datenintegrität 351
9.5 Anwendungsbeispiel zu Einschränkungen 358
9.6 Nachträgliche Definition von Einschränkungen 361
9.7 Verwaltung von Einschränkungen 361
9.8 Temporäre Tabellen 363
9.9 Partitionierung von Tabellen 365 10 Verwendung der räumlichen und hierarchischen Datentypen 377
10.1 Räumliche Datentypen 377
10.2 Der hierarchische Datentyp 408
11 Daten verwalten 417
11.1 Grundlegende Befehle zur Datensatzmanipulation 417
11.2 Verwendung des Zeilenkonstruktors 426
11.3 Kombinierte Auswahl-/Einfügeanweisungen 427
11.4 Die MERGE-Anweisung 429
11.5 Massenkopierprogramme 435
12 Benutzerverwaltung und Schemas 439
12.1 Authentifizierung am Server 440
12.2 Datenbankzugriff erteilen 444
12.3 Zusammenfassung von Benutzern zu Rollen 447
12.4 Rechtevergabe an Benutzer und Rollen 451
12.5 Deaktivierung und Aktivierung von Log-ins und Datenbankbenutzern 458
12.6 Vordefinierte Konten auf Server- und Datenbankebene 460
12.7 Schema 463
13 Sichten 469
13.1 Einsatz von Sichten 470
13.2 Verwalten von Sichten 472
13.3 Datenmanipulationsanweisungen auf eine Sicht 474
13.4 Systemsichten von SQL Server 480
14 Programmierung von gespeicherten Prozeduren 483
14.1 Überblick über die Verwendung von gespeicherten Prozeduren in SQL Server 483
14.2 Erstellung und Aufruf von gespeicherten Prozeduren 487
14.3 Tabellenübergabe an eine gespeicherte Prozedur 504
14.4 Optionen von gespeicherten Prozeduren 507
15 Programmierung von benutzerdefinierten Funktionen 513
15.1 Überblick über benutzerdefinierte Funktionen 513
15.2 Skalare Funktionen (Skalarwertfunktionen) 514
15.3 Inlinefunktionen (Tabellenwertfunktionen) 518
15.4 Tabellenwertfunktion mit mehreren Anweisungen 521
15.5 Ändern und Löschen von benutzerdefinierten Funktionen 524
15.6 Verwendung des Datentyps TABLE als lokale Variable 524
16 Programmierung und Einsatz von Triggern 529
16.1 DML-Trigger 529
16.2 DDL-Trigger 551
17 Nachverfolgung von Datenänderungen 557
17.1 Die neuen Möglichkeiten zur Nachverfolgung von Datenänderungen 557
17.2 Change Data Capture 558
17.3 Änderungsnachverfolgung 572
18 Ereignisbenachrichtigungen (Event Notifications) 579
18.1 Konfiguration einer Datenbank zur Nutzung des Service Brokers 580
18.2 Konfiguration des Zieldienstes 581
18.3 Erstellen einer Ereignisbenachrichtigung 583
18.4 Auslösen und Empfangen einer Ereignisbenachrichtigung 584
18.5 Service-Broker-Aktivierung 586
18.6 Löschen der erstellten Objekte 590
19 Erstellung und Einsatz eines Cursors 593
19.1 Funktionsweise eines Cursors 593
19.2 Erstellung eines Cursors 595
19.3 Öffnen eines Cursors 597
19.4 Das Abrufen von Datensätzen aus einem Cursor 598
19.5 Schließen und Löschen eines Cursors 606
19.6 Schleifenprogrammierung zum automatischen Durchlaufen eines Cursors 607
19.7 Daten in der Cursorauswahl aktualisieren und löschen 613
20 Indizes 615
20.1 Der nicht gruppierte Index auf einem Heap 616
20.2 Der gruppierte Index 620
20.3 Der nicht gruppierte Index auf einem gruppierten Index 623
20.4 Erstellung von Indizes 626
20.5 Verwaltung von Indizes 630
20.6 Statistiken 634
20.7 Planung des Einsatzes von Indizes 640
20.8 Weitere Optimierungsmöglichkeiten mit Hilfe von Indizes 649
21 Transaktionen 657
21.1 Einführung in Transaktionen 657
21.2 ACID 659
21.3 Interne Transaktionsverarbeitung 662
21.4 Verhalten bei Systemfehlern 664
21.5 Programmierung expliziter Transaktionen 665
21.6 Implizite Transaktionen 669
21.7 Wiederherstellung beim Systemstart (Recovery) 671
21.8 Sperren 673
21.9 Isolationsstufen auf Verbindungsebene 676
21.10 Sperrhinweise auf Tabellenebene 686
21.11 Informationen zu Sperren 687
21.12 Deadlocks 687
22 SQL Server als Laufzeitumgebung für .NET 693
22.1 Die Programmiermodelle im Vergleich 693
22.2 Die CLR-Integration im Detail 697
22.3 Der Hosting Layer 701
22.4 Verwaltung von Assemblies 704
22.5 Sicherheitsstufen 705
23 .NET-Programmierung 707
23.1 CLR-Unterstützung aktivieren 707
23.2 CLR-Prozeduren und Funktionen 709
23.3 Gespeicherte Prozeduren 714
23.4 Benutzerdefinierte Funktionen 722
23.5 Serverseitiger Datenzugriff mit ADO.NET 730
23.6 Pipes 732
23.7 Impersonalisierung 740
23.8 Benutzerdefinierte Typen 744
23.9 Benutzerdefinierte Aggregate 761
23.10 Benutzerdefinierte Trigger 768
23.11 Administration und Monitoring von CLR-Objekten 776
24 T-SQL: Neuerungen und Verbesserungen der Kompatibilität 781
24.1 CROSS APPLY und OUTER APPLY 783
24.2 Kreuztabellen mit PIVOT erstellen 785
24.3 Common Table Expressions 792
24.4 Fehlerbehandlung 801
24.5 Ranking- und Windowing-Funktionen 808
24.6 Die OUTPUT-Klausel 815
24.7 Die TABLESAMPLE-Klausel 817
24.8 EXCEPT- und INTERSECT-Statement 819
24.9 Tabellenwertparameter 820
25 Einsatz von XML in der Datenbank 825
25.1 Warum XML? 826
25.2 HTML und XML 826
25.3 XML-Fähigkeiten von SQL Server 831
25.4 Der XML-Datentyp 831
25.5 Auf gespeicherte XML-Daten zugreifen 838
25.6 Darstellung von Abfrageergebnissen im XML-Format 849
25.7 XML-Schema ermitteln 867
25.8 XML-Daten in einem relationalen Modell speichern 868
26 Der Einsatz von Webservices in der Datenbank 873
26.1 Warum Webservices? 874
26.2 SQL Server als Webservice-Backend betreiben 875
26.3 Endpoints 876
26.4 Einen Endpoint erstellen 877
26.5 WSDL ermitteln 885
26.6 Zugriff vom Client 886
26.7 Session- und State-Management 889
26.8 Batch-Abfragen 893
26.9 Endpoints verwalten 895
27 Datenbankzugriff mit ADO.NET 897
27.1 Einleitung 897
27.2 Die Datenprovider 901
27.3 Die Verbindung zu einer Datenbank herstellen 903
27.4 Die Datenbankabfrage 926
27.5 Das SqlDataReader-Objekt 933
27.6 Parametrisierte Abfragen 942
27.7 Der SqlDataAdapter 958
27.8 Daten im lokalen Speicher -- das DataSet 971
27.9 Mit mehreren Tabellen arbeiten 997
27.10 Aktualisieren der Datenbank 1005
27.11 Objekte vom Typ DataView 1036
27.12 Stark typisierte DataSets 1042
27.13 Fazit: Typisierte oder nicht typisierte DataSets? 1068
27.14 Projekte mit grafischer Benutzeroberfläche 1069
27.15 Datenbindung 1078
28 LINQ 1095
28.1 Was ist LINQ? 1095
28.2 Neue Sprachfeatures in C# 3.0 1096
28.3 LINQ to Objects 1112
28.4 LINQ to SQL 1140
28.5 Der LINQ-to-SQL-Designer (O/R-Designer) 1166
Index 1185
1 Installation und Aktualisierung von SQL Server 2008 R2 27
1.1 Überblick über die verfügbaren SQL-Server-2008-R2-Versionen 27
1.2 Installationsvoraussetzungen 29
1.3 Installation von SQL Server 2008 R2 30
1.4 Installation der SQL-Server-Beispieldatenbanken 41
1.5 Aktualisierung auf SQL Server 2008 R2 44
2 Datenbankgrundlagen 57
2.1 Server und Client 57
2.2 Relationale Datenbanken 58
2.3 Datenbankmanagementsystem 77
2.4 Integritätsarten 80
3 Logischer Datenbankentwurf 83
3.1 Grundlagen des Datenbankentwurfs 83
3.2 Normalisierungsregeln (Normalformen) 84
3.3 Normalisierung in der Praxis 91
3.4 Denormalisierung 95
3.5 Entity-Relationship-Diagramme 96
4 Die Oberfläche von SQL Server 99
4.1 Das SQL Server Management Studio 99
4.2 Das Bearbeiten von SQL-Anweisungen im Management Studio 118
4.3 SQL-Server-Dokumentation und Hilfen zur Programmierung 134
4.4 Überblick über die SQL-Server-Dienste 146
4.5 Das Dienstprogramm sqlcmd 147
4.6 SQL-Server-Integration in die Windows PowerShell 150
4.7 Der SQL-Server-Aktivitätsmonitor 159
4.8 Berichte 161
5 Grundlegende Abfragetechniken 163
5.1 Einführung in SQL 163
5.2 SQL-Grundlagen 164
5.3 Grundlegende Operatoren 173
5.4 Einfache Abfragen 177
5.5 Auswahloperatoren 192
5.6 Aggregatfunktionen 200
5.7 Unterabfragen 203
5.8 Zusammenfassung, Gruppierung und Beschränkung von Abfrageergebnissen 206
5.9 Ausgaben mit PRINT und SELECT 218
6 Grundlagen der SQL-Programmierung 221
6.1 Das Stapeltrennzeichen GO 221
6.2 (Lokale) Variablen 223
6.3 Ablaufsteuerung 231
6.4 Fallunterscheidungen 241
6.5 Funktionen 248
6.6 Dynamische SQL-Anweisungen 260
6.7 Fehler in SQL Server und ihre Behandlung 262
6.8 Fehlerbehandlung 265
7 Mehrtabellenabfragen 283
7.1 Tabellen verknüpfen (JOIN-Anweisung) 283
7.2 Abfragen unter Verwendung mehrerer Server 293
8 Erstellen und Ändern von Datenbanken 295
8.1 Erstellen einer einfachen Datenbank 295
8.2 Einfluss der model-Datenbank auf das Erstellen neuer Datenbanken 302
8.3 Löschen von Datenbanken 304
8.4 Erstellen einer Datenbank mit mehreren Dateien 304
8.5 Nachträgliche Änderungen an Datenbankdateien 307
8.6 Erstellen einer Datenbank mit mehreren Dateigruppen 310
8.7 Datenbanken verkleinern 313
8.8 Datenbankdateien verkleinern 314
8.9 Gespeicherte Systemprozeduren (Stored Procedures) zur Datenbankverwaltung 316
8.10 Datenbank-Momentaufnahmen 316
8.11 RAID-Systeme 325
8.12 Transparente Datenverschlüsselung 329
9 Erstellen von Tabellen 333
9.1 Die grundlegende Syntax zur Tabellenerstellung 333
9.2 Tabellen ändern 348
9.3 Löschen von Tabellen 351
9.4 Implementierung der Datenintegrität 351
9.5 Anwendungsbeispiel zu Einschränkungen 358
9.6 Nachträgliche Definition von Einschränkungen 361
9.7 Verwaltung von Einschränkungen 361
9.8 Temporäre Tabellen 363
9.9 Partitionierung von Tabellen 365 10 Verwendung der räumlichen und hierarchischen Datentypen 377
10.1 Räumliche Datentypen 377
10.2 Der hierarchische Datentyp 408
11 Daten verwalten 417
11.1 Grundlegende Befehle zur Datensatzmanipulation 417
11.2 Verwendung des Zeilenkonstruktors 426
11.3 Kombinierte Auswahl-/Einfügeanweisungen 427
11.4 Die MERGE-Anweisung 429
11.5 Massenkopierprogramme 435
12 Benutzerverwaltung und Schemas 439
12.1 Authentifizierung am Server 440
12.2 Datenbankzugriff erteilen 444
12.3 Zusammenfassung von Benutzern zu Rollen 447
12.4 Rechtevergabe an Benutzer und Rollen 451
12.5 Deaktivierung und Aktivierung von Log-ins und Datenbankbenutzern 458
12.6 Vordefinierte Konten auf Server- und Datenbankebene 460
12.7 Schema 463
13 Sichten 469
13.1 Einsatz von Sichten 470
13.2 Verwalten von Sichten 472
13.3 Datenmanipulationsanweisungen auf eine Sicht 474
13.4 Systemsichten von SQL Server 480
14 Programmierung von gespeicherten Prozeduren 483
14.1 Überblick über die Verwendung von gespeicherten Prozeduren in SQL Server 483
14.2 Erstellung und Aufruf von gespeicherten Prozeduren 487
14.3 Tabellenübergabe an eine gespeicherte Prozedur 504
14.4 Optionen von gespeicherten Prozeduren 507
15 Programmierung von benutzerdefinierten Funktionen 513
15.1 Überblick über benutzerdefinierte Funktionen 513
15.2 Skalare Funktionen (Skalarwertfunktionen) 514
15.3 Inlinefunktionen (Tabellenwertfunktionen) 518
15.4 Tabellenwertfunktion mit mehreren Anweisungen 521
15.5 Ändern und Löschen von benutzerdefinierten Funktionen 524
15.6 Verwendung des Datentyps TABLE als lokale Variable 524
16 Programmierung und Einsatz von Triggern 529
16.1 DML-Trigger 529
16.2 DDL-Trigger 551
17 Nachverfolgung von Datenänderungen 557
17.1 Die neuen Möglichkeiten zur Nachverfolgung von Datenänderungen 557
17.2 Change Data Capture 558
17.3 Änderungsnachverfolgung 572
18 Ereignisbenachrichtigungen (Event Notifications) 579
18.1 Konfiguration einer Datenbank zur Nutzung des Service Brokers 580
18.2 Konfiguration des Zieldienstes 581
18.3 Erstellen einer Ereignisbenachrichtigung 583
18.4 Auslösen und Empfangen einer Ereignisbenachrichtigung 584
18.5 Service-Broker-Aktivierung 586
18.6 Löschen der erstellten Objekte 590
19 Erstellung und Einsatz eines Cursors 593
19.1 Funktionsweise eines Cursors 593
19.2 Erstellung eines Cursors 595
19.3 Öffnen eines Cursors 597
19.4 Das Abrufen von Datensätzen aus einem Cursor 598
19.5 Schließen und Löschen eines Cursors 606
19.6 Schleifenprogrammierung zum automatischen Durchlaufen eines Cursors 607
19.7 Daten in der Cursorauswahl aktualisieren und löschen 613
20 Indizes 615
20.1 Der nicht gruppierte Index auf einem Heap 616
20.2 Der gruppierte Index 620
20.3 Der nicht gruppierte Index auf einem gruppierten Index 623
20.4 Erstellung von Indizes 626
20.5 Verwaltung von Indizes 630
20.6 Statistiken 634
20.7 Planung des Einsatzes von Indizes 640
20.8 Weitere Optimierungsmöglichkeiten mit Hilfe von Indizes 649
21 Transaktionen 657
21.1 Einführung in Transaktionen 657
21.2 ACID 659
21.3 Interne Transaktionsverarbeitung 662
21.4 Verhalten bei Systemfehlern 664
21.5 Programmierung expliziter Transaktionen 665
21.6 Implizite Transaktionen 669
21.7 Wiederherstellung beim Systemstart (Recovery) 671
21.8 Sperren 673
21.9 Isolationsstufen auf Verbindungsebene 676
21.10 Sperrhinweise auf Tabellenebene 686
21.11 Informationen zu Sperren 687
21.12 Deadlocks 687
22 SQL Server als Laufzeitumgebung für .NET 693
22.1 Die Programmiermodelle im Vergleich 693
22.2 Die CLR-Integration im Detail 697
22.3 Der Hosting Layer 701
22.4 Verwaltung von Assemblies 704
22.5 Sicherheitsstufen 705
23 .NET-Programmierung 707
23.1 CLR-Unterstützung aktivieren 707
23.2 CLR-Prozeduren und Funktionen 709
23.3 Gespeicherte Prozeduren 714
23.4 Benutzerdefinierte Funktionen 722
23.5 Serverseitiger Datenzugriff mit ADO.NET 730
23.6 Pipes 732
23.7 Impersonalisierung 740
23.8 Benutzerdefinierte Typen 744
23.9 Benutzerdefinierte Aggregate 761
23.10 Benutzerdefinierte Trigger 768
23.11 Administration und Monitoring von CLR-Objekten 776
24 T-SQL: Neuerungen und Verbesserungen der Kompatibilität 781
24.1 CROSS APPLY und OUTER APPLY 783
24.2 Kreuztabellen mit PIVOT erstellen 785
24.3 Common Table Expressions 792
24.4 Fehlerbehandlung 801
24.5 Ranking- und Windowing-Funktionen 808
24.6 Die OUTPUT-Klausel 815
24.7 Die TABLESAMPLE-Klausel 817
24.8 EXCEPT- und INTERSECT-Statement 819
24.9 Tabellenwertparameter 820
25 Einsatz von XML in der Datenbank 825
25.1 Warum XML? 826
25.2 HTML und XML 826
25.3 XML-Fähigkeiten von SQL Server 831
25.4 Der XML-Datentyp 831
25.5 Auf gespeicherte XML-Daten zugreifen 838
25.6 Darstellung von Abfrageergebnissen im XML-Format 849
25.7 XML-Schema ermitteln 867
25.8 XML-Daten in einem relationalen Modell speichern 868
26 Der Einsatz von Webservices in der Datenbank 873
26.1 Warum Webservices? 874
26.2 SQL Server als Webservice-Backend betreiben 875
26.3 Endpoints 876
26.4 Einen Endpoint erstellen 877
26.5 WSDL ermitteln 885
26.6 Zugriff vom Client 886
26.7 Session- und State-Management 889
26.8 Batch-Abfragen 893
26.9 Endpoints verwalten 895
27 Datenbankzugriff mit ADO.NET 897
27.1 Einleitung 897
27.2 Die Datenprovider 901
27.3 Die Verbindung zu einer Datenbank herstellen 903
27.4 Die Datenbankabfrage 926
27.5 Das SqlDataReader-Objekt 933
27.6 Parametrisierte Abfragen 942
27.7 Der SqlDataAdapter 958
27.8 Daten im lokalen Speicher -- das DataSet 971
27.9 Mit mehreren Tabellen arbeiten 997
27.10 Aktualisieren der Datenbank 1005
27.11 Objekte vom Typ DataView 1036
27.12 Stark typisierte DataSets 1042
27.13 Fazit: Typisierte oder nicht typisierte DataSets? 1068
27.14 Projekte mit grafischer Benutzeroberfläche 1069
27.15 Datenbindung 1078
28 LINQ 1095
28.1 Was ist LINQ? 1095
28.2 Neue Sprachfeatures in C# 3.0 1096
28.3 LINQ to Objects 1112
28.4 LINQ to SQL 1140
28.5 Der LINQ-to-SQL-Designer (O/R-Designer) 1166
Index 1185
"Das Buch vermittelt alle wichtigen Kenntnisse, welcher der SQL- und .NET-Entwickler für die Arbeit mit SQL Server haben muss. Die Ausführungen der Autoren sind durchweg verständlich, und die Codebeispiele lassen sich gut nachvollziehen. In der Gesamtnote hat sich das Buch damit ein Sehr gut verdient. dotnetpro Empfehlung der Redaktion! Visual Studio One Das Buch gehört für mich eindeutig zu den besten deutschsprachigen SQL Server 2008 R2 Kompendien für Entwickler.
Auf knapp über 1.200 Seiten erhält der Leser einen rundherum gelungenen Überblick über die Programmierung des SQL Servers 2008 R2. Dabei beginnen die Autoren mit der Beschreibung der Installation, gefolgt von der Datenmodellierung und T-SQL Entwicklung hin zu .Net CLR und XML Themen und enden bei der Datenzugriffsprogrammierung über ADO.NET und LINQ." -- InsideSQL.org - Frank Kalis Buchtipp! dotnetpro
Auf knapp über 1.200 Seiten erhält der Leser einen rundherum gelungenen Überblick über die Programmierung des SQL Servers 2008 R2. Dabei beginnen die Autoren mit der Beschreibung der Installation, gefolgt von der Datenmodellierung und T-SQL Entwicklung hin zu .Net CLR und XML Themen und enden bei der Datenzugriffsprogrammierung über ADO.NET und LINQ." -- InsideSQL.org - Frank Kalis Buchtipp! dotnetpro