Aufbau des Buchs 25 Teil 1: SQL Server Grundlagen 25
Teil 2: Relationales Entwickeln und Transact-SQL 25
Teil 3:.Net-Entwicklung 26
Teil 4: XML 26
Teil 5: Services 27
Die Begleit-CD 27
Support 27
Die Website zum Buch 27
Danksagungen 28
Teil A - SQL Server Grundlagen 29
1 Szenarien für SQL Server Entwickler 31
Klassische relationale Datenbanken 32
.NET Inside 34
XML in der Datenbank 36 Gekoppelte Systeme und SOA 37
Webservices 38
Service Broker 38
Übersicht über die netShop-Datenbank 90 Die Aufgabenstellung im Demo-Szenario 90
Installation der Beispieldatenbank(en) 91
Der Aufbau der netShop-Datenbank 93
Teil B - Relationales Entwickeln und Transact SQL 103
4 Die Grundlagen von Transact-SQL 105
Transact-SQL ist tot - es lebe Transact-SQL! 106
SQL, Transact-SQL und die ANSI-Standards 107
Erweiterungen 108
Neues in Transact-SQL bei SQL Server 2005 109
Übersicht über Transact-SQL 110 Mit T-SQL Befehlen arbeiten 110
Die elementaren SQL-Befehle 113
Syntax und Schreibweisen 117
Formatierung des Quelltextes 120
5 Werkzeuge für T-SQL Entwickler: Management Studio & Co. 121
SQL Server Management Studio 123 Server registrieren 123
Mit dem Objekt-Explorer arbeiten 125
T-SQL-Code bearbeiten 128
Vorlagen verwenden 134
Projekte verwalten 140
Visual Studio 2005 Datenbankprojekte und der Server Explorer 142 Server Explorer 143
Debugger für gespeicherte Prozeduren 144
Visio for Enterprise Architects 147 Die Möglichkeiten von Visio 148
Dokumentation durch Reverse-Engineering 149
Unterschiede zwischen Visio 2003 und Visio Enterprise Architect 2003 157
Ausblick: Visual Studio Team Edition for Database Professionals 157 Verwaltung eines Datenbank Schemas 159 Automatisieren von Datenbanktests 164
6 Datenbanken einrichten und verwalten 169
Die Speicherplatzverwaltung von SQL Server 170 Grundlagen der SQL Server-Speicherwaltung 171
Das Transaktionsprotokoll 175
Dateigruppen 180
Anlegen einer Datenbank 183 Anlegen einer Datenbank im Management Studio 183
Anlegen einer Datenbank mit Transact-SQL 186
Anlegen einer SQL Server-Datenbank in Visual Studio 187
Datenbankoptionen einstellen 189
Sortierungen 192
Die Wiederherstellungsoptionen einer SQL Server-Datenbank 195
Wiederherstellungsmodelle, Sicherungsstrategien und Verfügbarkeitslösungen 197
Datenbanken verwalten 199 Eine Datenbank Offline schalten 203
Eine Datenbank vom Server trennen oder anhängen 204
Eine Datenbank löschen 206
Datenbanksnapshots 207
Performance-Überlegungen 209 Grundregeln 210
High Performance Konfigurationen 210
Tabellen in der Benutzeroberfläche einrichten 229 Datenbankdiagramme einsetzen 233
Tabellen in T-SQL anlegen und verwalten 238 Eine Tabelle mit T-SQL anlegen 238
Aliasdatentypen in T-SQL 245
Systeminformation zu Datenbanktabellen 246
Partitionierte Tabellen 250
Temporäre Tabellen und Tabellenvariablen 257 Temporäre Tabellen anlegen und verwenden 257
Temporäre Tabellen versus Tabellenvariablen 260
8 Daten abfragen und auswerten 263
SELECT FROM WHERE à la SQL Server 264 Einfache Abfragen mit SELECT 264
Ergebnismengen mit TOP einschränken 271
Datensätze mit der WHERE-Klausel selektieren 274
Neue Tabellen mit SELECT INTO anlegen 279
Daten aggregieren und gruppieren 280
Aggregatfunktionen 280
Gruppierungen mit GROUP BY und HAVING 284
Unterabfragen 291
Grundlagen von Unterabfragen 291
Unterabfragen in einer SELECT-Liste 293
Unterabfragen in einer WHERE-Klausel 294
Spezielle Operatoren für Unterabfragen 295
Korrelierte Unterabfragen 298
Unterabfragen in der T-SQL-Programmierung 299
Relationale Operatoren 302
Tabellenverknüpfungen ohne JOIN-Operator 307
Abfrageergebnisse mit UNION kombinieren 308
INTERSECT und EXCEPT 309
NULL IS NULL IS NULL 311
Stichproben mit TABLESAMPLE generieren 314
Abfrageergebnisse nummerieren und unterteilen 316
Ergebnisse pivotieren 322
Eine Pivotierung mit dem UNPIVOT-Operator umkehren 328
Common Table Expressions und rekursive Abfragen 330
Verteilte Abfragen 334
Einrichten eines Verbindungsservers 334
9 Daten manipulieren 337
INSERT INTO 338 INSERT INTO eines Datensatzes 338
INSERT INTO einer Datensatzmenge 339
Den letzten IDENTITY-Wert beschaffen 340
INSERT in eine IDENTITY-Spalte 341
UPDATE 342
UPDATE mit direkten Werten 342
DELETE 345
TRUNCATE TABLE 346
Masseneinfügen mit BULK INSERT 346
Mit der OUTPUT-Klausel sehen was passiert 349
10 Mit Transact-SQL programmieren 351
Programmiersprachenelemente in T-SQL 352
T-SQL-Skripte, Batches und gespeicherte Prozeduren 352
Codeblöcke 355
Kommentare 355
Meldungen mit PRINT 356
Verwendung von Variablen 357
Bedingungen mit IF ELSE 364
Schleifen mit WHILE 366
Sprünge mit GOTO 367
Dynamische Befehlsausführung mit EXECUTE 367
Die Verarbeitung mit RETURN beenden 369
SET-Anweisungen 369
Ausdrücke in T-SQL 371
Operatoren 372
CASE-Ausdrücke 381
Eingebaute Funktionen in T-SQL 382
11 Indizierung 393
Erste Beispiele 395
Abfragepläne 399
Grundlagen zu SQL Server-Indizes 401
Datenstrukturen und Suchverfahren 402
Füllfaktor 410
Zugriffsoperatoren 411
Index Statistiken und Abfragepläne 412
Indizes anlegen 415
Technische Grenzen von Indizes 415
Indizes im Management Studio anlegen 415
Indizes mit T-SQL bearbeiten 418
Indizes pflegen und optimieren 420
Informationen zu Indizes finden und auswerten 420
Indizes und Statistiken mit T-SQL warten 422
Statistiken automatisch aktualisieren 425
Indizes richtig planen 442
Abgedeckte Indizes 443
Indizes mit Include-Spalten 444
Indizes auf berechneten Spalten 445
12 Sicherheit 447
Serverbenutzer, Datenbankbenutzer, Schemata und Rollen 449
Verbindungen und Benutzer 449
Schemata 459
Namensauflösung 461
Verwaiste Benutzer in einer Datenbank 462
Berechtigungen und Rollen 465
Das Rechtesystem auf Serverebene 466
Berechtigungen in der Datenbank verwalten 468
Kryptographie in der Datenbank 479
Informationen in einer Datenbank verschlüsseln 480
13 Sichten 485
Konzepte: Sichten als gespeicherte Abfragen 486
Mit Sichten arbeiten 489
Sichten in der Entwicklungsumgebung anlegen 489
Sichten mit T-SQL bearbeiten 490
Beispiele für Sichten 492
Daten über Sichten ändern 493
Die Sichtdefinition verbergen 495
Sichten mit Schemabindung 495
Sichten und Sicherheit 496
Beispiele für gespeicherte Prozeduren 532
Eine Prozedur für das Aktualisieren von Informationen 532
Eine Prozedur für das Anlegen eines neuen Artikels 533
Eine Prozedur für das Löschen eines Kunden 534
Eine Prozedur für das Vorbereiten einer Auftragsübersicht 536
Performance-Überlegungen 537
Lebensphasen einer gespeicherten Prozedur 537
Performanceprobleme bei gespeicherten Prozeduren 539
Spezielle Prozeduren für Datenschnittstellen 543
Systemprozeduren und erweiterte gespeicherte Prozeduren 54
4
15 Benutzerdefinierte Funktionen 547
Einsatz benutzerdefinierter Funktionen 548
Benutzerdefinierte Funktionen in T-SQL 548
Benutzerdefinierte Funktionen im SQL Server Management Studio anlegen 549
Skalarwertfunktionen 550
Inline-Funktionen 554
Tabellenwertfunktionen mit mehreren Anweisungen 556
Der Operator APPLY 558
Performance-Überlegungen 560
Performance- Probleme bei Skalarwertfunktionen 560
Die Performance von APPLY 562
17 Transaktionen und Sperren 597
Transaktionen 598
Transaktionskonzepte 598
Transaktionen in Transact-SQL 600
Transaktionen verfolgen 603
Explizite Transaktionen und Fehlerzustände 604
Transaktionen bei abfangbaren Fehlern 606
Rollback bei nichtkritischen Fehlern erzwingen 608
Implizite Transaktionen 608
Verschachtelte Transaktionen und Savepoints 609
Nicht COMMIT-fähige Transaktionen 614
Verteilte Transaktionen 615
Sperren 617
Lost Update 618
Dirty Read 619
Non-Repeatable Read 620
Das Phantom-Problem 621
Das Sperrverhalten von SQL Server 622
Das Sperrverhalten beeinflussen 624
Sperren im Detail 632
Sperrinformationen anzeigen 641
18 Serverseitige Cursors 649
T-SQL-Cursors 651
Mit einem T-SQL-Cursor arbeiten 651
Cursors in T-SQL 654
Beispiele für T-SQL-Cursors 658
19 Performance-Optimierungen 665
Messwerkzeuge 666
Der Windows Performance-Monitor 666
Profiler 672
Datenbankmodul-Optimierungsratgeber 675
Messungen mit Transact-SQL 678
Die Ausführung von T-SQL steuern 680
Tabellenhinweise 680
Abfragehinweise 684
Hinweise für relationale Operationen 685
Hinweise für die Planerstellung und -verwendung 687
20 Administration für Entwickler 689
SQL Server installieren und konfigurieren 690
Basiskonfiguration einer Server-Instanz 697
Datenbanken sichern und wiederherstellen 707
Backup-Verfahren 710
Wiederherstellungsverfahren 711
Backup und Restore im Management-Studio 712
T-SQL-Kommandos für das Prüfen von Datenbanken 717
Benutzerdefinierte Datentypen 792
Grundlagen 793
Implementierung eines benutzerdefinierten Datentyps 794
Benutzerdefinierte Methoden und Eigenschaften 798
Benutzerdefinierte Serialisierung 800
Validieren der Übergabewerte 802
XML-Unterstützung 804
Zusammenfassung 804
24 Das SQL Server-Objektmodell 805
Das SqlContext-Objekt 807
Das SqlTriggerContext-Objekt 811
Das SqlPipe-Objekt 813
Das SqlDataRecord-Objekt 815
Transaktionen 821
Zusammenfassung 822
25 CLR-Sicherheit 823
Aktivieren der CLR 824
Klassische SQL-Sicherheit 826
Code Access Security 826
Zusammenfassung 828
26 Clientseitige Programmierung 829
Die SqlBulkCopy-Klasse 831
Die SqlConnection-Klasse 833
Die SqlCommand-Klasse 837
Die SqlParameter-Klasse 844
Die DataSet-Klasse 846
Die SglError- und SqlException-Klassen 848
Die SqlTransaction-Klasse 849
Die SqlDependency-Klasse 850
MARS 854
Caching 854
Aktivieren von MARS 854
Verwendung von MARS 855
Die ExceptionMessageBox-Klasse 856
Zusammenfassung 859
27 Serverapplikationen in .NET verwalten 861
Basics der Server-Management-Objects 864
Feststellen, welche SQL Server es gibt 865
Eine Verbindung mit einer SQL Server-Instanz herstellen 867
Das SMO-Objektmodell 868
SMO-Programmierverfahren 871
Praktische Beispiele 881
Eine neue Datenbank einrichten 881
Belegten und freien Speicherplatz anzeigen 882
Server- und Datenbankbenutzer anlegen 884
Eine vollständige Datenbanksicherung durchführen 884
Eine vorhandene Tabelle ändern 885
Datenbankobjekte in andere Datenbanken kopieren 886
Eine Assembly installieren und eine Funktion einrichten 888
Einen Wartungsjob einrichten 889
Globale Suche nach Objektnamen 891
Ein Skript für alle Tabellen und Beziehungen generieren 892
28 Mit dem SQL Server. Mobile entwickeln 895
SQL Server Mobile-Übersicht 896
Merkmale mobiler SQL Server-Datenbanken 897
Datenaustausch mit einem SQL Server 899
Die Arbeitsumgebung 900
Eine mobile SQL Server-Lösung entwickeln 901
Szenario: Artikeldaten mobil erfassen 901
Mobile Datenbanken mit dem Management Studio anlegen und verwalten 901
Den IIS vorbereiten 910
Ein Abonnement einrichten und testen 912
Mobile SQL Server-Anwendungen mit Visual Studio 2005 914
Ein Projekt einrichten 914
Daten mit einem SQL Server synchronisieren 921
Daten über Merge-Replikation synchronisieren 921
Daten über RDA synchronisieren 922
XQuery 968
Die for-Klausel 968
Die where-Klausel 969
Die order by-Klausel 969
Die return-Klausel 970
Funktionen für XQuery 971
if-then-else-Konstrukt 975
XML erzeugen 975
Zusammenfassung 976
32 Abfragen mit der FOR XML-Klausel 977
Einführung 978
Die XML RAW-Option 978
Die XML AUTO-Option 979
Die XML EXPLICIT-Option 981
Neue FOR XML-Features 983
TYPE-Direktive 984
PATH-Direktive 984
Namensräume 986
Rekursive XML-Dokumente 991
XSINIL-Direktive 992
Zusammenfassung 993
33 Der xml-Datentyp 995
Der xml-Datentyp 996
Einschränkungen und Standardwerte 997
Verwendung von Triggern und berechneten Spalten 997
Typisierte xml-Spalten 998
Umwandeln bestehender varchar()- oder text-Spalten in xml-Spalten 1000
Abfragen aus xml-Datentypen 1001
Grundsätzliches zur Verwendung von Namensräumen 1001
query-Methode 1005
value-Methode 1007
exist-Methode 1008
modify-Methode 1009
nodes-Methode 1014
Zusammenfassung 1015
XML-Indizierung 1015
Primärer Index 1016
Sekundärer XML Path-Index 1016
Sekundärer XML Value-Index 1017
Sekundärer XML Property-Index 1017
Erstellung und Pflege von XML-Indizes 1017
Der Bericht „Bestellungen nach Artikelgruppen“ 1218
Der Berichts-Designer 1218
Neues Projekt 1218
Daten 1220
Layout 1221
Vorschau 1226
Der Inhalt 1227
Das Aussehen 1230
Seitenkopf und Seitenfuß 1230
Tabelle 1232
Eine neue Spalte im Bericht 1239
Eine neue Gruppierung im Bericht 1241
Parameter 1246
Keine Daten anzuzeigen 1253
Drill-Through 1254
Code im Bericht 1257
Code für den Bericht 1259
SQL Server Management Studio 1274
Administration des Berichtsservers 1274
Ablage mit System 1277
Zugriff mit System 1280
Freigegebene Zeitpläne 1284
Berichts-Manager 1287
42 Berichtsmodelle und Berichts-Generator 1289
Daten finden leicht gemacht 1290
Berichtsmodell Bestellungen 1290
Ein neues Berichtsmodell 1291
Die Quelle der Daten 1291
Neue Sichten der Daten 1293
Datenquellensicht anlegen 1293
Datenquellensicht bearbeiten 1296
Ein Modell für jeden 1301
Berichtsmodell anlegen 1302
Berichtsmodell anpassen 1305
Bereitstellen des Berichtsmodells 1314
Der Berichts-Generator 1316
43 Reporting Services programmieren 1321
Möglichkeiten der Integration 1322
Die Schnittstellen URL und Webservice 1322
Die Applikation Druckdialog 1323
Die Schnittstelle URL 1325
Die Schnittstelle Webservice 1334
Die Qual der Wahl 1346
Das ReportViewer-Control 1347
Berichte des Berichtsservers integrieren 1347
Eigene Berichte integrieren 1351
Notification Services-Grundlagen 1390
Übersicht über die Notification Services-Architektur 1390
Entwicklungswerkzeuge 1392
Mit den Notification Services entwickeln 1394
Kochrezept für eine SQLNS-Entwicklun 1394
Implementierung einer einfachen Notification Service-Anwendung 1395
Notification Management Objects 1415