Dieses bewährte, umfassende Handbuch richtet sich sowohl an Einsteiger als auch an erfahrene Datenbank-Entwickler, die auf praxisorientierte und anschauliche Weise die Programmierung von SQL Server 2012 erlernen und sich die vielfältigen Möglichkeiten vollständig erschließen möchten. Vom ersten Datenbankentwurf und den SQL-Grundlagen, der Migration von SQL Server 2008 oder SQL Server 2005 bis hin zu den neuen Features und konkreten Programmierbeispielen beschreiben die Autoren alles Notwendige, um den SQL Server 2012 als Programmierplattform und Datenmanagement-Server zu nutzen.
Aus dem Inhalt:
Installation und Migration
Datentypen in SQL Server 2012
Datenbankentwurf
Grundlagen T-SQL-Programmierung
Benutzerverwaltung und Schemata
Gespeicherte Prozeduren
Benutzerdefinierte Funktionen
Einsatz von Triggern
Event Notification
XML, Webservices, PowerShell
Datenbankzugriff mit ADO.NET und LINQ
ADO.NET Entity Framework
Galileo Press heißt jetzt Rheinwerk Verlag.
Rezensionen / Stimmen
Das Programmierhandbuch vermittelt alle wichtigen Themen, die der SQL- und .NET-Entwickler für die Arbeit mit SQL Server wissen muss. Den Ausführungen der Autoren lässt sich leicht folgen, und die gewählten Codebeispiele sind gut nachzuvollziehen. In der Gesamtnote hat das Buch ein Sehr gut verdient.
Reihe
Sprache
Verlagsort
Verlagsgruppe
Editions-Typ
Maße
Höhe: 24 cm
Breite: 16.8 cm
ISBN-13
978-3-8362-1944-0 (9783836219440)
Schweitzer Klassifikation
Dirk Mertins ist Microsoft Certified Solution Developer (MCSD) und Microsoft Certified Database Administrator (MCDBA). Er ist freiberuflicher Trainer für die Themen SQL-Programmierung und Datenbanken.
Jörg Neumann ist IT-Consultant bei der Resco GmbH in Hamburg, Fachautor und Sprecher auf Entwicklerkonferenzen. Er ist Spezialist für Client- und Datenbank-Technologien.
Andreas Kühnel wohnt in Aachen und beschäftigt sich seit den Anfängen des C64 mit der Programmierung. Er ist seit 1995 Microsoft Certified Trainer (MCT) und zudem als Microsoft Certified Developer (MCSD) und Java-Programmierer (SCJP) zertifiziert. Seine "große Liebe" galt anfangs Visual Basic und hier insbesondere der Datenbankprogrammierung und der Entwicklung von COM/COM+-Anwendungen. Seit der ersten Vorstellung von .NET konzentriert sich sein Schwerpunkt hauptsächlich auf VB.NET und C# sowie den Produkten, die sich im Umfeld von .NET ansiedeln, u.a. dem BizTalk Server und SharePoint.
Andreas Kühnel ist als freiberuflicher IT-Trainer und Berater tätig. Sie erreichen ihn unter Kuehnel@dotnet-training.de.
Vorwort ... 31
Grundlagen ... 33
1. Installation und Aktualisierung von SQL Server 2012 ... 35
1.1 ... Überblick über die verfügbaren SQL-Server-2012-Versionen ... 35
1.2 ... Installationsvoraussetzungen ... 37
1.3 ... Installation von SQL Server 2012 ... 38
1.4 ... Installation der SQL-Server-Beispieldatenbank ... 49
1.5 ... Aktualisierung auf SQL Server 2012 ... 52
2. Datenbankgrundlagen ... 65
2.1 ... Server und Client ... 65
2.2 ... Relationale Datenbanken ... 66
2.3 ... Datenbankmanagementsystem ... 84
2.4 ... Integritätsarten ... 87
3. Logischer Datenbankentwurf ... 89
3.1 ... Grundlagen des Datenbankentwurfs ... 89
3.2 ... Normalisierungsregeln (Normalformen) ... 90
3.3 ... Normalisierung in der Praxis ... 97
3.4 ... Denormalisierung ... 100
3.5 ... Entity-Relationship-Diagramme ... 102
4. Die Oberfläche von SQL Server 2012 ... 105
4.1 ... Das SQL Server Management Studio ... 105
4.2 ... Das Bearbeiten von SQL-Anweisungen im Management Studio ... 123
4.3 ... SQL-Server-Dokumentation und Hilfen zur Programmierung ... 139
4.4 ... Überblick über die SQL-Server-Dienste ... 151
4.5 ... Das Dienstprogramm sqlcmd ... 152
4.6 ... SQL-Server-Integration in die Windows PowerShell ... 155
4.7 ... Der SQL-Server-Aktivitätsmonitor ... 163
4.8 ... Berichte ... 165
SQL-Programmierung ... 167
5. Grundlegende Abfragetechniken ... 169
5.1 ... Einführung in SQL ... 169
5.2 ... SQL-Grundlagen ... 170
5.3 ... Grundlegende Operatoren ... 179
5.4 ... Einfache Abfragen ... 183
5.5 ... Auswahloperatoren ... 198
5.6 ... Aggregatfunktionen ... 205
5.7 ... Unterabfragen ... 209
5.8 ... Zusammenfassung, Gruppierung und Beschränkung von Abfrageergebnissen ... 215
5.9 ... Die Mengen-Operatoren EXCEPT und INTERSECT ... 226
5.10 ... Ausgaben mit PRINT und SELECT ... 228
6. Grundlagen der SQLProgrammierung ... 231
6.1 ... Das Stapeltrennzeichen GO ... 231
6.2 ... (Lokale) Variablen ... 233
6.3 ... Ablaufsteuerung ... 241
6.4 ... Fallunterscheidungen ... 252
6.5 ... Funktionen ... 259
6.6 ... Dynamische SQL-Anweisungen ... 279
6.7 ... Fehler in SQL Server und ihre Behandlung ... 281
6.8 ... Fehlerbehandlung ... 283
7. Mehrtabellenabfragen ... 305
7.1 ... Tabellen verknüpfen (JOIN-Anweisung) ... 305
7.2 ... Abfragen unter Verwendung mehrerer Server ... 314
8. Erstellen und Ändern von Datenbanken ... 317
8.1 ... Erstellen einer einfachen Datenbank ... 317
8.2 ... Einfluss der »model«-Datenbank auf das Erstellen neuer Datenbanken ... 325
8.3 ... Löschen von Datenbanken ... 326
8.4 ... Erstellen einer Datenbank mit mehreren Dateien ... 327
8.5 ... Nachträgliche Änderungen an Datenbankdateien ... 329
8.6 ... Erstellen einer Datenbank mit mehreren Dateigruppen ... 332
8.7 ... Datenbanken verkleinern ... 335
8.8 ... Datenbankdateien verkleinern ... 336
8.9 ... Gespeicherte Systemprozeduren (Stored Procedures) zur Datenbankverwaltung ... 338
8.10 ... Datenbank-Momentaufnahmen ... 338
8.11 ... RAID-Systeme ... 348
8.12 ... Transparente Datenverschlüsselung ... 352
9. Erstellen von Tabellen ... 355
9.1 ... Die grundlegende Syntax zur Tabellenerstellung ... 355
9.2 ... Tabellen ändern ... 371
9.3 ... Löschen von Tabellen ... 374
9.4 ... Implementierung der Datenintegrität ... 374
9.5 ... Anwendungsbeispiel zu Einschränkungen ... 382
9.6 ... Nachträgliche Definition von Einschränkungen ... 384
9.7 ... Verwaltung von Einschränkungen ... 384
9.8 ... Temporäre Tabellen ... 386
9.9 ... Partitionierung von Tabellen ... 389
10. Speicherung von Daten in FileTables ... 397
10.1 ... Voraussetzungen für die Verwendung von FileTables ... 397
10.2 ... Erstellung einer FileTable ... 400
10.3 ... Zugriff auf eine FileTable ... 402
10.4 ... Sichten zur Abfrage vorhandener FileTables in einer Datenbank ... 404
11. Verwendung der räumlichen und hierarchischen Datentypen ... 405
11.1 ... Räumliche Datentypen ... 405
11.2 ... Der hierarchische Datentyp ... 436
12. Daten verwalten ... 445
12.1 ... Grundlegende Befehle zur Datensatzmanipulation ... 445
12.2 ... Verwendung des Zeilenkonstruktors ... 454
12.3 ... Kombinierte Auswahl-/Einfügeanweisungen ... 455
12.4 ... Die MERGE-Anweisung ... 457
12.5 ... Massenkopierprogramme ... 464
13. Benutzerverwaltung und Schemas ... 467
13.1 ... Authentifizierung am Server ... 468
13.2 ... Datenbankzugriff erteilen ... 473
13.3 ... Zusammenfassung von Benutzern zu Rollen ... 475
13.4 ... Rechtevergabe an Benutzer und Rollen ... 481
13.5 ... Deaktivierung und Aktivierung von Logins und Datenbankbenutzern ... 488
13.6 ... Vordefinierte Konten auf Server- und Datenbankebene ... 490
13.7 ... Schema ... 493
14. Sichten ... 499
14.1 ... Einsatz von Sichten ... 501
14.2 ... Verwalten von Sichten ... 502
14.3 ... Datenmanipulationsanweisungen auf eine Sicht ... 505
14.4 ... Systemsichten von SQL Server ... 510
15. Programmierung von gespeicherten Prozeduren ... 513
15.1 ... Überblick über die Verwendung von gespeicherten Prozeduren in SQL Server ... 513
15.2 ... Erstellung und Aufruf von gespeicherten Prozeduren ... 517
15.3 ... Tabellenübergabe an eine gespeicherte Prozedur ... 534
15.4 ... Optionen von gespeicherten Prozeduren ... 536
16. Programmierung von benutzerdefinierten Funktionen ... 543
16.1 ... Überblick über benutzerdefinierte Funktionen ... 543
16.2 ... Skalare Funktionen (Skalarwertfunktionen) ... 544
16.3 ... Inlinefunktionen (Tabellenwertfunktionen) ... 548
16.4 ... Tabellenwertfunktion mit mehreren Anweisungen ... 551
16.5 ... Ändern und Löschen von benutzerdefinierten Funktionen ... 554
16.6 ... Verwendung des Datentyps »table« als lokale Variable ... 554
17. Programmierung und Einsatz von Triggern ... 559
17.1 ... DML-Trigger ... 559
17.2 ... DDL-Trigger ... 581
18. Nachverfolgung von Datenänderungen ... 587
18.1 ... Die Möglichkeiten zur Nachverfolgung von Datenänderungen: Change Data Capture und die Änderungsnachverfolgung ... 587
18.2 ... Change Data Capture ... 588
18.3 ... Änderungsnachverfolgung ... 603
19. Ereignisbenachrichtigungen (Event Notifications) ... 609
19.1 ... Konfiguration einer Datenbank zur Nutzung des Service Brokers ... 610
19.2 ... Konfiguration des Zieldienstes ... 611
19.3 ... Erstellen einer Ereignisbenachrichtigung ... 613
19.4 ... Auslösen und Empfangen einer Ereignisbenachrichtigung ... 614
19.5 ... Service-Broker-Aktivierung ... 615
19.6 ... Löschen der erstellten Objekte ... 619
20. Erstellung und Einsatz eines Cursors ... 621
20.1 ... Funktionsweise eines Cursors ... 621
20.2 ... Erstellung eines Cursors ... 623
20.3 ... Öffnen eines Cursors ... 625
20.4 ... Das Abrufen von Datensätzen aus einem Cursor ... 626
20.5 ... Schließen und Löschen eines Cursors ... 635
20.6 ... Schleifenprogrammierung zum automatischen Durchlaufen eines Cursors ... 636
20.7 ... Daten in der Cursorauswahl aktualisieren und löschen ... 641
21. Sequenzen ... 643
21.1 ... Erstellung einer Sequenz mit Standardeinstellungen ... 643
21.2 ... Informationen zu den vorhandenen Sequenzen in einer Datenbank ... 644
21.3 ... Abrufen von Sequenzwerten ... 644
21.4 ... Die Verwendung der Parameter AS, START, INCREMENT, MINVALUE, MAXVALUE, CYCLE und CACHE ... 646
22. Indizes ... 655
22.1 ... Der nicht gruppierte Index auf einem Heap ... 656
22.2 ... Der gruppierte Index ... 660
22.3 ... Der nicht gruppierte Index auf einem gruppierten Index ... 663
22.4 ... Der Columnstore-Index ... 666
22.5 ... Erstellung von Indizes ... 667
22.6 ... Verwaltung von Indizes ... 671
22.7 ... Statistiken ... 674
22.8 ... Planung des Einsatzes von Indizes ... 680
22.9 ... Weitere Optimierungsmöglichkeiten mit Hilfe von Indizes ... 688
23. Transaktionen ... 697
23.1 ... Einführung in Transaktionen ... 697
23.2 ... ACID ... 700
23.3 ... Interne Transaktionsverarbeitung ... 702
23.4 ... Verhalten bei Systemfehlern ... 704
23.5 ... Programmierung expliziter Transaktionen ... 705
23.6 ... Implizite Transaktionen ... 709
23.7 ... Sperren ... 711
23.8 ... Isolationsstufen auf Verbindungsebene ... 713
23.9 ... Sperrhinweise auf Tabellenebene ... 723
23.10 ... Informationen zu Sperren ... 725
23.11 ... Deadlocks ... 725
.NET-Programmierung ... 731
24. SQL Server als Laufzeitumgebung für .NET ... 733
24.1 ... Die Programmiermodelle im Vergleich ... 733
24.2 ... Die CLR-Integration im Detail ... 737
24.3 ... Der Hosting-Layer ... 741
24.4 ... Verwaltung von Assemblies ... 744
24.5 ... Sicherheitsstufen ... 745
25. .NET-Programmierung ... 747
25.1 ... CLR-Unterstützung aktivieren ... 747
25.2 ... CLR-Prozeduren und Funktionen ... 749
25.3 ... Gespeicherte Prozeduren ... 754
25.4 ... Benutzerdefinierte Funktionen ... 762
25.5 ... Serverseitiger Datenzugriff mit ADO.NET ... 770
25.6 ... Pipes ... 772
25.7 ... Impersonalisierung ... 780
25.8 ... Benutzerdefinierte Typen ... 785
25.9 ... Benutzerdefinierte Aggregate ... 801
25.10 ... Benutzerdefinierte Trigger ... 809
25.11 ... Administration und Monitoring von CLR-Objekten ... 816
26. T-SQL: Erweiterte Themen ... 821
26.1 ... CROSS APPLY und OUTER APPLY ... 823
26.2 ... Kreuztabellen mit PIVOT erstellen ... 825
26.3 ... Common Table Expressions ... 833
26.4 ... Fehlerbehandlung ... 841
26.5 ... Ranking- und Windowing-Funktionen ... 848
26.6 ... Die OUTPUT-Klausel ... 855
26.7 ... Die TABLESAMPLE-Klausel ... 857
26.8 ... EXCEPT- und INTERSECT-Statement ... 859
26.9 ... Tabellenwertparameter ... 861
27. Einsatz von XML in der Datenbank ... 867
27.1 ... Warum XML? ... 868
27.2 ... HTML und XML ... 868
27.3 ... XML-Fähigkeiten von SQL Server ... 873
27.4 ... Der XML-Datentyp ... 873
27.5 ... Auf gespeicherte XML-Daten zugreifen ... 879
27.6 ... Darstellung von Abfrageergebnissen im XML-Format ... 891
27.7 ... XML-Schema ermitteln ... 908
27.8 ... XML-Daten in einem relationalen Modell speichern ... 909
28. Datenbankzugriff mit ADO.NET ... 913
28.1 ... Einleitung ... 913
28.2 ... Die Datenprovider ... 917
28.3 ... Die Verbindung zu einer Datenbank herstellen ... 918
28.4 ... Die Datenbankabfrage ... 941
28.5 ... Das SqlDataReader-Objekt ... 947
28.6 ... Parametrisierte Abfragen ... 956
28.7 ... Der SqlDataAdapter ... 971
28.8 ... Daten im lokalen Speicher -- das DataSet ... 984
28.9 ... Mit mehreren Tabellen arbeiten ... 1010
28.10 ... Aktualisieren der Datenbank ... 1018
28.11 ... Objekte vom Typ DataView ... 1047
28.12 ... Stark typisierte DataSets ... 1053
28.13 ... Fazit: Typisierte oder nicht typisierte DataSets? ... 1078
28.14 ... Projekte mit grafischer Benutzeroberfläche ... 1079
28.15 ... Datenbindung ... 1088
29. LINQ ... 1103
29.1 ... LINQ-relevante Sprachfeatures in C# ... 1104
29.2 ... LINQ to Objects ... 1119
30. Einführung in das ADO.NET Entity Framework ... 1149
30.1 ... Kritische Betrachtung von ADO.NET ... 1149
30.2 ... Ein erstes Entity Data Model (EDM) erstellen ... 1152
30.3 ... Das Entity Data Model im Designer ... 1155
30.4 ... Der Aufbau des Entity Data Models ... 1161
30.5 ... Die Klassen des Entity Data Models (EDM) ... 1165
30.6 ... Die Architektur des Entity Frameworks ... 1171
31. Datenabfragen des Entity Data Models (EDM) ... 1175
31.1 ... Abfragen mit LINQ to Entities ... 1176
31.2 ... Abfragen mit Entity SQL ... 1199
31.3 ... Der EntityClient-Provider ... 1205
31.4 ... Abfrage-Generator-Methoden (QueryBuilder-Methoden) ... 1208
31.5 ... SQL-Direktabfragen ... 1209
32. Entitätsaktualisierung und Zustandsverwaltung ... 1211
32.1 ... Aktualisieren von Entitäten ... 1211
32.2 ... Der Lebenszyklus einer Entität im Objektkontext ... 1220
32.3 ... Das »ObjectStateEntry«-Objekt ... 1229
32.4 ... Die Klasse »EntityKey« ... 1234
32.5 ... Komplexere Szenarien ... 1236
33. Konflikte behandeln ... 1241
33.1 ... Allgemeine Betrachtungen ... 1241
33.2 ... Konkurrierende Zugriffe mit dem Entity Framework ... 1243
34. Plain Old CLR Objects (POCOs) ... 1251
34.1 ... Ein erstes Projekt mit POCO-Klassen ... 1251
34.2 ... Datenabfrage mit Hilfe der POCOs ... 1255
34.3 ... Änderungen verfolgen ... 1257
Index ... 1265