Dirk Mertins, Jörg Neumann, Andreas Kühnel Das Programmiererhandbuch SQL Server 2005 Inkl. ADO.NET 2.0 Auf einen Blick Vorwort ................................................................................. 23 1 Installation und Aktualisierung ............................................ 25 2 Datenbankgrundlagen .......................................................... 59 3 Logischer Datenbankentwurf ............................................... 85 4 Die neue Oberfläche des SQL Servers .................................. 101 5 Grundlegende Abfragetechniken .......................................... 151 6 Grundlagen der SQL-Programmierung ................................. 203 7 Mehrtabellenabfragen .......................................................... 265 8 Erstellen und Ändern von Datenbanken ............................... 277 9 Erstellen von Tabellen ........................................................... 305 10 Daten verwalten ................................................................... 327 11 Benutzerverwaltung und Schemata ..................................... 341 12 Sichten .................................................................................. 371 13 Programmierung von gespeicherten Prozeduren ................. 385 14 Programmierung von benutzerdefinierten Funktionen ........ 413 15 Programmierung und Einsatz von Triggern .......................... 429 16 Erstellung und Einsatz eines Cursors ................................... 457 17 Indizes ................................................................................... 479 18 Transaktionen ....................................................................... 513 19 Der SQL Server als Laufzeitumgebung für .NET ................... 551 20 .NET-Programmierung .......................................................... 565 21 T-SQL: Neuerungen und Verbesserungen ............................ 637 22 Einsatz von XML in der Datenbank ...................................... 677 23 Der Einsatz von Webservices in der Datenbank .................. 709 24 Datenbankzugriff mit ADO.NET ........................................... 733 Index ..................................................................................... 855 Inhalt Vorwort ........................................................................................................ 1 Installation und Aktualisierung ............................................... 25 1.1 1.2 1.3 1.4 2 Installationsvoraussetzungen ........................................................ 1.1.1 Die verschiedenen Versionen des SQL Servers 2005 ...... 1.1.2 Systemvoraussetzungen ................................................. Installation von SQL Server 2005 ................................................. Vorbereiten der Aktualisierung auf SQL Server 2005 .................... 1.3.1 Installation des Updateratgebers ................................... 1.3.2 Anwendung des Updateratgebers ................................. Durchführung der Aktualisierung auf SQL Server 2005 ................. 25 25 27 28 42 43 46 55 Datenbankgrundlagen ............................................................. 59 2.1 2.2 2.3 2.4 3 23 Server und Client ......................................................................... Relationale Datenbanken ............................................................. 2.2.1 Struktureller Aufbau von Tabellen ................................. 2.2.2 Im Zusammenhang mit Tabellen gebräuchliche Fachbegriffe .................................................................. 2.2.3 Schlüssel ....................................................................... 2.2.4 Beziehungsarten ............................................................ Datenbankmanagementsystem .................................................... Integritätsarten ............................................................................ 59 60 63 65 66 75 78 81 Logischer Datenbankentwurf ................................................... 85 3.1 3.2 3.3 3.4 3.5 Grundlagen des Datenbankentwurfs ............................................ Normalisierungsregeln (Normalformen) ....................................... 3.2.1 Erste Normalform .......................................................... 3.2.2 Zweite Normalform ....................................................... 3.2.3 Dritte Normalform ........................................................ Normalisierung in der Praxis ........................................................ Denormalisierung ........................................................................ Entity/Relationship-Diagramme ................................................... 85 86 88 90 92 93 97 98 5 Inhalt 4 Die neue Oberfläche des SQL Servers ...................................... 101 4.1 4.2 4.3 4.4 4.5 4.6 5 101 103 111 121 121 128 131 134 134 137 141 142 145 147 Grundlegende Abfragetechniken ............................................. 151 5.1 5.2 5.3 5.4 6 Rückblick ..................................................................................... Das SQL Server Management Studio ............................................ 4.2.1 Der Objekt-Explorer ...................................................... Das Bearbeiten von SQL-Anweisungen im Abfragefenster des Management Studios ............................................................. 4.3.1 Der SQL Abfrage-Editor ................................................ 4.3.2 Der Ergebnisbereich ...................................................... 4.3.3 Der Abfrage-Designer ................................................... SQL Server-Dokumentation und Hilfen zur Programmierung ........ 4.4.1 Die SQL Server Onlinedokumentation ........................... 4.4.2 Der Vorlagen-Explorer .................................................. 4.4.3 Die Skript-Generierung in SQL Server 2005 ................... 4.4.4 Die Verwendung von Lesezeichen ................................. Überblick über die SQL Server-Dienste ........................................ Das Dienstprogramm sqlcmd ....................................................... Einführung in SQL ........................................................................ SQL-Grundlagen ......................................................................... 5.2.1 Formatierung ................................................................ 5.2.2 Bezeichner .................................................................... 5.2.3 Systemdatentypen ......................................................... 5.2.4 Informationen zu den Datentypen einer Tabelle ............ 5.2.5 Verwendung und Kennzeichnung von Zahlen, Zeichenketten und Datums-/Uhrzeitwerten ................... 5.2.6 Kommentare ................................................................. Grundlegende Operatoren ........................................................... 5.3.1 Arithmetische Operatoren ............................................. 5.3.2 Zeichenkettenoperator .................................................. 5.3.3 Vergleichsoperatoren .................................................... 5.3.4 Logische Operatoren ..................................................... Einfache Abfragen ........................................................................ 5.4.1 USE ............................................................................... 5.4.2 SELECT…FROM ............................................................ 5.4.3 Berechnete Spalten ....................................................... 5.4.4 DISTINCT ...................................................................... 5.4.5 ORDER BY-Klausel ........................................................ 5.4.6 WHERE-Klausel ............................................................. 151 152 153 153 154 158 158 159 160 160 161 161 161 163 164 164 168 169 171 174 Inhalt 5.5 5.6 5.7 5.8 5.9 6 Auswahloperatoren ..................................................................... 5.5.1 IS (NOT) NULL-Auswahloperator .................................. 5.5.2 BETWEEN-Auswahloperator ......................................... 5.5.3 IN-Auswahloperator ...................................................... 5.5.4 LIKE-Auswahloperator .................................................. Aggregatfunktionen ..................................................................... Unterabfragen ............................................................................. Zusammenfassung, Gruppierung und Beschränkung von Abfrageergebnissen ..................................................................... 5.8.1 Verknüpfung mehrerer Abfrageergebnisse durch UNION ......................................................................... 5.8.2 Beschränkung des Abfrageergebnisses mit TOP ............. 5.8.3 GROUP BY-Klausel ....................................................... Ausgaben mit PRINT und SELECT ................................................ 179 179 181 182 183 186 189 193 193 194 197 201 Grundlagen der SQL-Programmierung .................................... 203 6.1 6.2 6.3 6.4 6.5 Das Stapeltrennzeichen GO ......................................................... (Lokale) Variablen ........................................................................ 6.2.1 Variablendeklaration ..................................................... 6.2.2 Wertezuweisung an eine Variable ................................. 6.2.3 Gültigkeitsbereich von Variablen ................................... 6.2.4 Verwendung von Variablen ........................................... 6.2.5 Lokale und globale Variablen in SQL Server ................... 6.2.6 Wertezuweisung an Variablen durch Abfragen .............. Ablaufsteuerung .......................................................................... 6.3.1 Blöcke ........................................................................... 6.3.2 IF…ELSE ....................................................................... 6.3.3 IF EXISTS ...................................................................... 6.3.4 WHILE-Schleife ............................................................. 6.3.5 RETURN ........................................................................ 6.3.6 GOTO ........................................................................... 6.3.7 WAITFOR ..................................................................... Fallunterscheidungen ................................................................... 6.4.1 Die CASE-Funktion ....................................................... 6.4.2 Die ISNULL-Funktion .................................................... Funktionen .................................................................................. 6.5.1 Konfigurationsfunktionen .............................................. 6.5.2 Datums-/Uhrzeitfunktionen .......................................... 6.5.3 Zeichenfolgenfunktionen ............................................... 6.5.4 Mathematische Funktionen ........................................... 203 205 205 206 207 208 208 209 212 212 213 215 217 220 220 221 222 222 228 229 229 230 233 236 7 Inhalt 6.6 6.7 6.8 7 7.2 242 243 243 246 246 250 252 255 255 257 259 262 Tabellen verknüpfen (JOIN-Anweisung) ....................................... 7.1.1 Einbindung zweier Tabellen in die SELECT-Anweisung .. 7.1.2 Innere Verknüpfung (INNER JOIN) ................................ 7.1.3 Äußere Verknüpfung (OUTER JOIN) .............................. 7.1.4 Mehrfache JOIN-Anweisungen ...................................... 7.1.5 Kreuzverknüpfung (CROSS JOIN) .................................. 7.1.6 Umkehrung der Funktionsweise des INNER JOIN .......... Abfragen unter Verwendung mehrerer Server .............................. 7.2.1 Vollgekennzeichnete (vollqualifizierte) Namen .............. 7.2.2 Einrichtung eines Verbindungsservers ........................... 265 265 267 270 271 272 273 275 275 276 Erstellen und Ändern von Datenbanken .................................. 277 8.1 8.2 8.3 8.4 8.5 8 237 237 241 241 Mehrtabellenabfragen ............................................................. 265 7.1 8 6.5.5 Funktionen zur Statusabfrage ........................................ 6.5.6 Konvertierungsfunktionen ............................................. Dynamische SQL-Anweisungen .................................................... 6.6.1 Ausführung dynamischer Anweisungen mit EXECUTE .... 6.6.2 Ausführung dynamischer Anweisungen mit sp_executesql ................................................................ Fehler in SQL Server und ihre Behandlung ................................... 6.7.1 Struktur von Fehlermeldungen in SQL Server 2005 ......... Fehlerbehandlung ........................................................................ 6.8.1 Fehlerbehandlung mit TRY und CATCH ......................... 6.8.2 Funktionen zur Fehlerbehandlung ................................. 6.8.3 Gegenüberstellung von TRY…CATCH und @@ERROR .................................................................. 6.8.4 Abbruch verursachende Fehler ...................................... 6.8.5 Erstellung benutzerdefinierter Fehlermeldungen ........... 6.8.6 Programmgesteuerte Fehlerauslösung ........................... 6.8.7 Fehlerauslösung unter Verwendung von Parametern ..... 6.8.8 Löschen von benutzerdefinierten Fehlermeldungen ....... Erstellen einer einfachen Datenbank ............................................ Einfluss der model-Datenbank auf das Erstellen neuer Datenbanken ............................................................................... Löschen von Datenbanken ........................................................... Erstellen einer Datenbank mit mehreren Dateien ......................... Nachträgliche Änderungen an Datenbankdateien ........................ 8.5.1 Dateien hinzufügen ....................................................... 277 285 286 286 289 289 Inhalt 8.6 8.7 8.8 8.9 8.10 9 8.5.2 Dateieigenschaften ändern ............................................ 8.5.3 Dateien löschen ............................................................ Erstellen einer Datenbank mit mehreren Dateigruppen ................ Datenbanken verkleinern ............................................................. Datenbankdateien verkleinern ..................................................... Gespeicherte Systemprozeduren (stored procedures) zur Datenbankverwaltung .................................................................. RAID-Systeme ............................................................................. 8.10.1 RAID 0 .......................................................................... 8.10.2 RAID 1 ......................................................................... 8.10.3 RAID 3 ......................................................................... 8.10.4 RAID 5 ......................................................................... 291 292 292 295 297 298 298 299 300 301 302 Erstellen von Tabellen .............................................................. 305 9.1 9.2 9.3 9.4 9.5 9.6 9.7 9.8 Die grundlegende Syntax zur Tabellenerstellung .......................... 9.1.1 Definition einer Identitätsspalte .................................... 9.1.2 Bestimmung des physischen Speicherorts ...................... Tabellen ändern ........................................................................... 9.2.1 Spalten hinzufügen (ADD) ............................................. 9.2.2 Spalten ändern (ALTER COLUMN) ............................... 9.2.3 Spalten löschen (DROP COLUMN) ................................ Löschen von Tabellen .................................................................. Implementierung der Datenintegrität ........................................... 9.4.1 Die Einschränkungsarten im Überblick .......................... 9.4.2 Definition von Einschränkungen .................................... 9.4.3 Eigenschaften von Constraints ....................................... 9.4.4 Lösch- und Änderungsweitergabe ................................. Anwendungsbeispiel zu Einschränkungen .................................... Nachträgliche Definition von Einschränkungen ............................ Verwaltung von Einschränkungen ................................................ 9.7.1 Deaktivierung und Aktivierung von Einschränkungen .... 9.7.2 Löschen einer Einschränkung ........................................ Temporäre Tabellen ..................................................................... 9.8.1 Lokale temporäre Tabellen ............................................ 9.8.2 Globale temporäre Tabellen .......................................... 305 307 308 309 309 310 311 311 312 312 313 314 318 319 321 322 323 323 324 324 325 10 Daten verwalten ....................................................................... 327 10.1 Grundlegende Befehle zur Datensatzmanipulation ....................... 327 10.1.1 Einfügen von Datensätzen mit INSERT .......................... 327 9 10.2 10.3 10.1.2 Daten aktualisieren mit UPDATE ................................... 10.1.3 Löschen von Daten mit DELETE .................................... Kombinierte Auswahl-/Einfügeanweisungen ................................ 10.2.1 INSERT…SELECT ........................................................... 10.2.2 SELECT…INTO .............................................................. Massenkopierprogramme ............................................................ 10.3.1 BULK INSERT ................................................................ 10.3.2 bcp ............................................................................... 332 335 336 336 337 338 338 339 11 Benutzerverwaltung und Schemata ......................................... 341 11.1 11.2 11.3 11.4 11.5 11.6 11.7 Authentifizierung am Server ......................................................... 11.1.1 Einrichten eines Logins mit WindowsAuthentifizierung .......................................................... 11.1.2 Einrichten eines Logins mit SQL ServerAuthentifizierung .......................................................... Datenbankzugriff erteilen ............................................................. Zusammenfassung von Benutzern zu Rollen ................................. 11.3.1 Serverrollen .................................................................. 11.3.2 Feste Datenbankrollen .................................................. 11.3.3 Einen Benutzer zu einer Rolle hinzufügen ...................... Rechtevergabe an Benutzer und Rollen ........................................ 11.4.1 Objektberechtigungen .................................................. 11.4.2 Anweisungsberechtigungen ........................................... 11.4.3 SQL-Anweisungen zur Rechtevergabe ........................... Deaktivierung und Aktivierung von Logins und Datenbankbenutzern ................................................................... Vordefinierte Konten auf Server- und Datenbankebene ............... 11.6.1 Das Login system administrator (sa) .............................. 11.6.2 Die Gruppe der lokalen Administratoren ....................... 11.6.3 Der Datenbankbenutzer guest ....................................... Schemata in SQL Server 2005 ...................................................... 11.7.1 Objektverwaltung bis SQL Server 2000 ......................... 11.7.2 Objektverwaltung in SQL Server 2005 ........................... 11.7.3 Erstellen eines Schemas ................................................. 342 343 344 346 349 350 351 352 353 353 353 356 360 362 362 363 364 366 366 367 368 12 Sichten ..................................................................................... 371 12.1 12.2 Einsatz von Sichten ...................................................................... 372 Verwalten von Sichten ................................................................. 374 12.2.1 Erstellen einer Sicht ......................................................... 374 Inhalt 12.3 12.4 12.2.2 Ändern einer Sicht ........................................................ 12.2.3 Löschen einer Sicht ....................................................... Datenmanipulationsanweisungen auf eine Sicht ........................... 12.3.1 DML-Anweisungen auf eine Sicht ohne WHEREKlausel .......................................................................... 12.3.2 DML-Anweisungen auf eine Sicht mit WHEREKlausel .......................................................................... Systemsichten des SQL Servers .................................................... 12.4.1 Informationsschemasichten ........................................... 12.4.2 Systemsichten im Schema sys ........................................ 376 376 377 377 378 382 382 383 13 Programmierung von gespeicherten Prozeduren .................... 385 13.1 13.2 13.3 Überblick über die Verwendung von gespeicherten Prozeduren in SQL Server ............................................................ Erstellung und Aufruf von gespeicherten Prozeduren ................... 13.2.1 Grundlegende Syntax zu Erstellung einer gespeicherten Prozedur ................................................. 13.2.2 Verwendung von Eingabeparametern ............................ 13.2.3 Die verschiedenen Arten der Parameterübergabe .......... 13.2.4 Verweisbezogene Übergabe .......................................... 13.2.5 Verwendung von Ausgabeparametern ........................... 13.2.6 Verwendung eines Rückgabestatuscodes ....................... Optionen von gespeicherten Prozeduren ..................................... 13.3.1 ENCRYPTION ................................................................ 13.3.2 RECOMPILE .................................................................. 13.3.3 EXECUTE AS ................................................................. 385 389 389 391 394 396 398 402 407 407 409 411 14 Programmierung von benutzerdefinierten Funktionen ........... 413 14.1 14.2 14.3 14.4 14.5 14.6 Überblick über benutzerdefinierte Funktionen ............................. Skalare Funktionen (Skalarwertfunktionen) .................................. Inlinefunktionen (Tabellenwertfunktionen) .................................. Tabellenwertfunktion mit mehreren Anweisungen ....................... Ändern und Löschen von benutzerdefinierten Funktionen .................................................................................. 14.5.1 Ändern einer benutzerdefinierten Funktion ................... 14.5.2 Löschen einer benutzerdefinierten Funktion .................. Verwendung des Datentyps TABLE als lokale Variable ................. 14.6.1 Verwendung von Einschränkungen ................................ 413 414 418 422 424 424 424 425 427 11 Inhalt 15 Programmierung und Einsatz von Triggern ............................. 429 15.1 15.2 DML-Trigger ................................................................................ 15.1.1 Programmierung von DML-Triggern .............................. DDL-Trigger ................................................................................. 15.2.1 DDL-Trigger mit Serverbereich ...................................... 15.2.2 DDL-Trigger mit Datenbankbereich ............................... 429 431 451 451 453 16 Erstellung und Einsatz eines Cursors ....................................... 457 16.1 16.2 16.3 16.4 16.5 16.6 16.7 Funktionsweise eines Cursors ....................................................... Erstellung eines Cursors ............................................................... Öffnen eines Cursors .................................................................... Das Abrufen von Datensätzen aus einem Cursor .......................... 16.4.1 Aufruf einer FETCH-Anweisung ohne Verwendung von Variablen ................................................................ 16.4.2 Aufruf einer FETCH-Anweisung unter Verwendung von Variablen ................................................................ 16.4.3 Die Verwendung von Positionsangaben zum Abruf von Daten aus einem Cursor 463 Schließen und Löschen eines Cursors ........................................... Schleifenprogrammierung zum automatischen Durchlaufen eines Cursors ........................................................... Daten in der Cursorauswahl aktualisieren und löschen ................. 16.7.1 Aktualisieren ................................................................. 16.7.2 Löschen ........................................................................ 457 459 461 462 462 463 471 472 477 477 477 17 Indizes ...................................................................................... 479 17.1 17.2 17.3 17.4 17.5 12 Der nicht gruppierte Index auf einem Heap ................................. 17.1.1 Vorgehensweise beim Durchlaufen eines Index ............. Der gruppierte Index ................................................................... Der nicht gruppierte Index auf einem gruppierten Index .............. Erstellung von Indizes .................................................................. 17.4.1 Manuelle Erstellung eines Index ...................................... 17.4.2 Automatische Erstellung von Indizes ............................. Verwaltung von Indizes ............................................................... 17.5.1 Fragmentierung ............................................................... 17.5.2 Neuerstellung von Indizes ............................................. 17.5.3 Löschen eines Index ...................................................... 480 483 484 487 490 490 493 494 494 497 497 Inhalt 17.6 17.7 Statistiken .................................................................................... 17.6.1 Löschen einer Statistik .................................................. 17.6.2 Aktualisieren einer Statistik ........................................... 17.6.3 Informationen zu Statistiken abrufen ............................. Planung des Einsatzes von Indizes ................................................ 17.7.1 Verwendung des DatenbankmodulOptimierungsratgebers .................................................. 498 502 502 502 503 505 18 Transaktionen ........................................................................... 513 18.1 18.2 18.3 18.4 18.5 18.6 18.7 18.8 Einführung in Transaktionen ........................................................ ACID ........................................................................................... Interne Transaktionsverarbeitung ................................................. Verhalten bei Systemfehlern ........................................................ Programmierung expliziter Transaktionen .................................... Implizite Transaktionen ................................................................ Wiederherstellung beim Systemstart (Recovery) ........................... Sperren ........................................................................................ 18.8.1 Sperrebenen ................................................................. 18.8.2 Gemeinsame Sperren (shared locks) .............................. 18.8.3 Exklusive Sperren (exclusive locks) ................................ 18.9 Isolationsstufen auf Verbindungsebene ........................................ 18.9.1 READ UNCOMMITTED ................................................. 18.9.2 READ COMMITTED ...................................................... 18.9.3 REPEATABLE READ ....................................................... 18.9.4 SERIALIZABLE ............................................................... 18.9.5 Zusammenfassung der Eigenschaften von Sperrstufen ... 18.9.6 Information über die Sperrstufe einer Verbindung ......... 18.9.7 Setzen eines Timeout-Wertes ........................................ 18.10 Sperrhinweise auf Tabellenebene ................................................. 18.11 Informationen zu Sperren und Verbindungen ............................... 18.12 Deadlocks .................................................................................... 18.12.1 Vermeidung von Deadlocks ........................................... 18.12.2 Beispiel zur Erzeugung eines Deadlocks ......................... 513 516 518 520 521 525 527 529 530 530 531 532 533 535 536 538 540 540 540 541 542 547 549 549 19 Der SQL Server als Laufzeitumgebung für .NET ...................... 551 19.1 Die Programmiermodelle im Vergleich ......................................... 19.1.1 T-SQL ........................................................................... 19.1.2 Erweiterte gespeicherte Prozeduren .............................. 19.1.3 Einbindung von COM-Objekten .................................... 551 551 552 553 13 Inhalt 19.2 19.3 19.4 19.5 19.1.4 Einsatz von Managed Code ........................................... Die CLR-Integration im Detail ...................................................... 19.2.1 CLR-Hosting .................................................................. 19.2.2 Thread- und Speichermanagement ................................ 19.2.3 I/O-Zugriffe ................................................................... 19.2.4 Assemblies Loading ....................................................... 19.2.5 Application Domain Management ................................. Der Hosting Layer ....................................................................... Verwaltung von Assemblies ......................................................... Sicherheitsstufen ......................................................................... 553 555 556 556 557 557 558 559 562 563 20 .NET-Programmierung ............................................................. 565 20.1 20.2 20.3 20.4 14 CLR-Unterstützung aktivieren ...................................................... 20.1.1 CLR-Unterstützung per Skript aktivieren ........................ CLR-Prozeduren und Funktionen ................................................. 20.2.1 CLR vs. T-SQL ............................................................... 20.2.2 Prozeduren vs. Funktionen ............................................ 20.2.3 Veröffentlichung von Methoden ................................... 20.2.4 Implementierungsregeln ............................................... 20.2.5 Parameter und Rückgabewerte ...................................... 20.2.6 Sicherheitsaspekte ........................................................ Gespeicherte Prozeduren ............................................................. 20.3.1 Eine gespeicherte Prozedur mit Visual Studio erstellen ........................................................................ 20.3.2 Das SqlProcedure-Attribut ............................................ 20.3.3 Parameter und Rückgabe .............................................. 20.3.4 Temporäre Prozeduren .................................................. 20.3.5 Assembly bereitstellen .................................................. 20.3.6 Assembly ohne Visual Studio kompilieren ..................... 20.3.7 Installation mit sqlcmd durchführen .............................. 20.3.8 Prozeduren mit Visual Studio debuggen ........................ Benutzerdefinierte Funktionen ..................................................... 20.4.1 Einschränkungen ........................................................... 20.4.2 Das SqlFunction-Attribut .............................................. 20.4.3 Funktionen bereitstellen ............................................... 20.4.4 Skalare Funktionen ........................................................ 20.4.5 Eine Skalarfunktion erstellen ......................................... 20.4.6 Tabellenwertige Funktionen .......................................... 565 567 567 567 567 568 569 570 571 572 572 575 576 577 577 577 578 579 580 580 581 581 582 583 584 Inhalt 20.4.7 Unterschiede zwischen T-SQL- und CLR-Funktionen ..... 20.4.8 Eine tabellenwertige Funktion erstellen ......................... 20.5 Serverseitiger Datenzugriff mit ADO.NET ..................................... 20.5.1 Der Kontext .................................................................. 20.5.2 Verbindung zur Datenbank herstellen ........................... 20.6 Pipes ........................................................................................... 20.6.1 Die Send-Methode ....................................................... 20.6.2 Die ExecuteAndSend()-Methode ................................... 20.6.3 Ausgabestrom steuern ................................................... 20.7 Impersonalisierung ...................................................................... 20.8 Benutzerdefinierte Typen ............................................................. 20.8.1 Das SqlUserDefinedType-Attribut ................................. 20.8.2 Einen benutzerdefinierten Datentyp erstellen ................ 20.8.3 Das INullable-Interface ................................................. 20.8.4 Die ToString()-Methode ................................................ 20.8.5 Die Parse()-Methode ..................................................... 20.8.6 Erstellung des CalendarWeek-Datentyps ....................... 20.8.7 Den CalendarWeek-Typ installieren .............................. 20.8.8 Den CalendarWeek-Typ testen ...................................... 20.8.9 Validierungen ............................................................... 20.8.10 Methoden implementieren ........................................... 20.8.11 Serialisierung ................................................................ 20.8.12 Typen als Klassen abbilden ............................................ 20.8.13 Zugriff vom Client ......................................................... 20.9 Benutzerdefinierte Aggregate ....................................................... 20.9.1 Das SqlUserDefinedAggregate-Attribut ......................... 20.9.2 Die Init-Methode .......................................................... 20.9.3 Die Accumulate-Methode ............................................. 20.9.4 Die Merge-Methode ..................................................... 20.9.5 Die Terminate-Methode ............................................... 20.9.6 Ein Beispielaggregat ...................................................... 20.9.7 Das MaxRange-Aggregat implementieren ...................... 20.9.8 Hinweise zur Implementierung ...................................... 20.9.9 Aggregate installieren ................................................... 20.10 Benutzerdefinierte Trigger ........................................................... 20.10.1 Das SqlTrigger-Attribut ................................................. 20.10.2 Die TriggerContext-Klasse ............................................. 20.10.3 Trigger implementieren ................................................. 20.10.4 Hinweise zur Implementierung ...................................... 20.10.5 Trigger installieren ........................................................ 584 585 588 589 589 590 590 593 594 597 602 603 604 604 605 605 605 608 608 609 610 612 616 617 618 618 619 620 620 620 620 622 625 625 626 626 627 628 632 632 15 Inhalt 20.11 Administration und Monitoring von CLR-Objekten ...................... 633 20.11.1 Informationen über die installierten Assemblies ermitteln ....................................................................... 633 20.11.2 Laufzeitinformationen von CLR-Objekten ermitteln ....... 634 21 T-SQL: Neuerungen und Verbesserungen ................................ 637 21.1 21.2 21.3 21.4 21.5 21.6 21.7 21.8 21.9 Kompatibilität ............................................................................. 21.1.1 Kompatibilität festlegen ................................................ 21.1.2 Änderungen bei nicht ANSI-konformen Abfragen .......... CROSS APPLY und OUTER APPLY ............................................... Kreuztabellen mit PIVOT erstellen ............................................... 21.3.1 Entscheidungstabellen mit PIVOT erstellen ................... 21.3.2 Kreuztabellen in flache Listen transformieren ................ Common Table Expressions .......................................................... 21.4.1 Verarbeitung von hierarchischen Daten ......................... 21.4.2 Maximale Rekursionsstufe einstellen ............................. Fehlerbehandlung ........................................................................ 21.5.1 Informationen über den Fehler ermitteln ....................... 21.5.2 Eigene Fehler auslösen .................................................. 21.5.3 Verschachtelte Fehlerbehandlung .................................. Ranking- und Windowing-Funktionen ......................................... 21.6.1 Ergebnisse mit RANK() gewichten ................................. 21.6.2 Ranking ohne Lücken mit DENSE_RANK() ..................... 21.6.3 Gruppierte Ranglisten mit Windowing .......................... 21.6.4 Zeilen mit ROW_NUMBER() nummerieren .................... 21.6.5 Paging mit ROW_NUMBER() ......................................... 21.6.6 Daten mit NTILE() partitionieren ................................... Die OUTPUT-Klausel ................................................................... 21.7.1 Einschränkungen ........................................................... Die TABLESAMPLE-Klausel .......................................................... 21.8.1 Einschränkungen ........................................................... EXCEPT- und INTERSECT-Statement ............................................ 637 637 638 639 641 645 647 648 653 656 657 658 661 662 663 664 665 666 667 668 669 671 672 673 674 674 22 Einsatz von XML in der Datenbank ......................................... 677 22.1 22.2 22.3 16 Warum XML? .............................................................................. XML-Fähigkeiten des SQL Server 2005 ........................................ Der XML-Datentyp ...................................................................... 22.3.1 Vor- und Nachteile der XML-Datenspeicherung ............ 22.3.2 XML-Felder anlegen ...................................................... 678 678 679 679 681 Inhalt 22.4 22.5 22.6 22.3.3 XML-Felder mit einem Schema verknüpfen ................... Auf gespeicherte XML-Daten zugreifen ........................................ 22.4.1 XQuery als Abfragesprache .............................................. 22.4.2 Die Methoden des XML-Datentyps ............................... 22.4.3 Indizierung von XML-Feldern ........................................ XML-Daten aufbereiten ............................................................... 22.5.1 Einfluss auf die Transformation nehmen ........................ XML-Daten in einem relationalen Modell speichern .................... 22.6.1 Ein XML-Dokument in eine Tabelle importieren ............ 683 685 685 686 692 695 699 705 706 23 Der Einsatz von Webservices in der Datenbank ...................... 709 23.1 23.2 23.3 23.4 23.5 23.6 23.7 23.8 23.9 Warum Webservices? .................................................................. Den SQL Server als Webservice-Backend betreiben ...................... Endpoints .................................................................................... Einen Endpoint erstellen .............................................................. 23.4.1 Die Status eines Endpoints ............................................ 23.4.2 Adresse des Endpoints bestimmen ................................ 23.4.3 Ports konfigurieren ........................................................ 23.4.4 Methode definieren ...................................................... 23.4.5 Sicherheitskonfiguration ................................................ 23.4.6 Authentifizierungstyp festlegen ..................................... 23.4.7 Authentifizierungsverfahren festlegen ............................ 23.4.8 Berechtigungsverwaltung .............................................. 23.4.9 HTTP-Kompression aktivieren ....................................... WSDL ermitteln ........................................................................... 23.5.1 In die WSDL-Generierung eingreifen ............................. 23.5.2 WSDL vom Client abrufen ............................................. Zugriff vom Client ........................................................................ Session- und State-Management .................................................. 23.7.1 Sessions aktivieren ........................................................ 23.7.2 Session-Steuerung durch den Client .............................. Batch-Abfragen ............................................................................ Endpoints verwalten .................................................................... 710 710 712 713 714 715 715 715 717 717 718 721 721 721 721 722 722 725 727 727 729 731 24 Datenbankzugriff mit ADO.NET .............................................. 733 24.1 Allgemeines ................................................................................. 24.1.1 Installation von Visual C# 2005 Express Edition ............ 24.1.2 Projekte anlegen und speichern .................................... 24.1.3 Die Beispieldatenbank .................................................. 733 735 735 738 17 Inhalt 24.2 24.3 24.4 24.5 24.6 24.7 24.8 18 Am Anfang steht die Wahl des Daten-Providers ........................... Die Verbindung zu einer Datenquelle herstellen .......................... 24.3.1 Der Inhalt der Verbindungszeichenfolge ........................ 24.3.2 Die Authentifizierung .................................................... 24.3.3 Das Öffnen einer Verbindung ........................................ 24.3.4 Schließen einer Verbindung .......................................... 24.3.5 Die Dauer des Verbindungsaufbaus ............................... 24.3.6 Eigenschaften eines »SqlConnection«-Objekts ............... 24.3.7 Die Ereignisse eines »Connection«-Objekts ................... 24.3.8 Unterstützung bei Projekten mit grafischer Benutzeroberfläche ....................................................... Das »Command«-Objekt .............................................................. 24.4.1 Erzeugen eines »Command«-Objekts ............................... 24.4.2 Ausführen des »Command«-Objekts .............................. 24.4.3 Aktionsabfragen mit »ExecuteNonQuery« absetzen ....... 24.4.4 Auswahlabfragen mit »ExecuteReader« .......................... 24.4.5 Abfragen, die genau ein Ergebnis liefern ....................... 24.4.6 Parametrisierte Abfragen ............................................... 24.4.7 Die Unterstützung durch Visual Studio 2005 ................. Der »DataAdapter« als Bindeglied zwischen Datenbank und verbindungslosen Objekten .................................................. 24.5.1 Die Konstruktoren der Klasse »DataAdapter« ................ 24.5.2 Den lokalen Datenspeicher mit der Methode »Fill« füllen .................................................................... 24.5.3 Abrufen von Schemainformationen ............................... 24.5.4 Die Unterstützung von Visual Studio 2005 .................... Das »DataSet«-Objekt .................................................................. 24.6.1 Allgemeines .................................................................... 24.6.2 Ein »DataSet«-Objekt erzeugen ..................................... 24.6.3 Das »DataSet« füllen ..................................................... 24.6.4 Tabellen- und Spaltenbezeichner zuordnen ................... »DataTable«-Objekte ................................................................... 24.7.1 Die Zeilen und Spalten in einer »DataTable« .................... 24.7.2 Mit mehreren Tabellen arbeiten .................................... 24.7.3 Änderungen an einer »DataTable« vornehmen .............. 24.7.4 Datenausgabe in WinForms mit Visual Studio 2005 ...... Aktualisieren der Datenbank ........................................................ 24.8.1 Aktualisieren mit dem »CommandBuilder«-Objekt .......... 24.8.2 Manuell gesteuerte Aktualisierungen ............................ 24.8.3 Aktualisieren mit »ExecuteNonQuery« ........................... 738 740 742 743 744 746 746 747 748 749 751 751 751 752 754 757 757 761 762 764 765 771 778 781 781 781 782 782 789 789 792 798 805 815 815 818 820 Inhalt 24.8.4 24.8.5 24.8.6 24.8.7 Manuelles Aktualisieren mit dem DataAdapter ............. Den zu aktualisierenden Datensatz in der Datenbank suchen .................................................................. Den Benutzer über die fehlgeschlagenen Aktualisierungen informieren ................................................. Die konfliktverursachenden Datenzeilen bei der Datenbank abfragen ...................................................... 831 837 841 846 Index ............................................................................................................ 855 19 In diesem Kapitel werden die für das Verständnis von Datenbanksystemen notwendigen, grundlegenden Begriffe erläutert. Sie erhalten außerdem einen ersten Einblick in die Strukturen heutiger Datenbanksysteme. 2 Datenbankgrundlagen 2.1 Server und Client Bevor im nächsten Abschnitt näher auf die eigentlichen Datenbanksysteme eingegangen wird, sollen noch zwei Begriffe geklärt werden, die damit in engem Zusammenhang stehen und immer wieder – gerade bei Anwendern, die zum ersten Mal mit einem solchen Datenbanksystem arbeiten – für Irritationen sorgen: die Begriffe Server und Client. Diese Irritationen rühren häufig daher, dass beide Begriffe sowohl für eine Hardware- als auch für eine Softwarekomponente verwendet werden. Dies soll am Beispiel eines Servers näher betrachtet werden, für einen Client gelten ähnliche Überlegungen. Wenn von einem Server (engl.: Diener) die Rede ist, ist meistens ein in einem Netzwerk befindlicher Rechner gemeint, der anderen Rechnern Funktionen, Speicherplatz, Programme – im weitesten Sinne also Ressourcen – zur Verfügung stellt. Als einen Server bezeichnet man aber auch eine Software (wie den SQL Server), die anderen Programmen über eine Schnittstelle Funktionen zur Verfügung stellt, im Falle des SQL Servers also die Datenbankfunktionalität. Dabei ist es unerheblich, ob das zugreifende Programm, das in diesem Fall als Client (engl.: Auftraggeber, Kunde, Klient) bezeichnet wird, auf einem anderen Rechner innerhalb eines Netzwerks ausgeführt wird, über das Internet mit dem Server verbunden ist oder auf demselben Rechner wie die Serversoftware läuft. Letzteres wird bei Ihnen der Fall sein, wenn Sie die Installation des SQL Servers auf Ihrem lokalen Computer vorgenommen haben. Sie greifen mit den von SQL Server 2005 mitgelieferten Clientanwendungen auf das auf dem gleichen Rechner laufende Serverprogramm zu. 59 2 Datenbankgrundlagen Ganz allgemein lässt sich sagen: Ein Server stellt Ressourcen bereit, die von einem Client benutzt werden können. Dabei ist es unerheblich, ob es sich um einen Hardware- oder Softwareserver beziehungsweise -client handelt. In diesem Buch soll, wenn nicht anders angegeben, mit »Server« immer das Datenbankprogramm, also SQL Server 2005, gemeint sein. 2.2 Relationale Datenbanken Das Modell einer relationalen Datenbank wurde erstmals 1970 von Dr. Edgar Frank Codd (1923–2003) in seinem Artikel »A Relational Model of Data for Large Shared Data Banks« veröffentlicht. Eine Kopie dieses Artikels finden Sie zum Beispiel unter der Internetadresse http://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf. Mit diesem Artikel wurde von Codd eine der tiefgreifendsten Veränderungen in der Datenverarbeitung ausgelöst: der Übergang zu den relationalen Datenbanken. Die ersten für Computer entwickelten Datenbanken unterschieden sich in ihrer Struktur grundlegend von der Struktur heutiger Datenbanksysteme. Eine der ersten Lösungen, um Daten auf einem Computer zugänglich zu machen, beruhte auf der sequenziellen Speicherung der Daten in Textdateien. In der weiteren Entwicklung wurde der Ansatz verfolgt, die Daten in einer hierarchischen Struktur abzulegen. Abbildung 2.1 zeigt ein Beispiel für den Aufbau einer solchen Datenbank. Um einen Datensatz zu finden, musste eine Baumstruktur durchlaufen werden, an deren Ende der gesuchte Datensatz stand. Kontakte privat männlich Abbildung 2.1 60 geschäftlich weiblich männlich Prinzipieller Aufbau erster Datenbanklösungen weiblich Relationale Datenbanken Codds Arbeit hingegen basiert auf einem wissenschaftlichen Ansatz, in dem er die Verwaltung von Daten durch mathematische Methoden der Mengenlehre beschreibt. Im Zusammenhang mit relationalen Datenbanken werden daher häufig die aus der Mengenlehre stammenden Fachbegriffe verwendet. Diese etwas »akademisch« klingenden Begriffe sind sicherlich ein Grund dafür, dass bei vielen Leuten immer noch eine hohe Hemmschwelle vor der Beschäftigung mit Datenbanken besteht. Einige dieser Fachbegriffe werden weiter unten erwähnt und erklärt, da sie in anderen Publikationen verwendet werden. In diesem Buch werden – soweit es möglich ist – allgemein verständliche Bezeichnungen verwendet. Für manche Fachbegriffe gibt es jedoch kein Synonym, so dass diese dann im Buch Verwendung finden. Was aber versteht man nun genau unter einer relationalen Datenbank? Relationale Datenbanken arbeiten nach einem völlig anderen Prinzip als die oben beschriebenen Ansätze. Das wesentlichste Merkmal einer relationalen Datenbank besteht darin, dass die Daten in zueinander in Beziehung stehenden Tabellen (den so genannten Relationen) abgelegt werden (Abbildung 2.2). Auf welche Weise die Tabellen einer relationalen Datenbank zueinander in Beziehung gesetzt werden, wird weiter unten in diesem Kapitel behandelt. Abbildung 2.2 Schematischer Aufbau einer relationalen Datenbank Die Aufteilung von Daten in zueinander in Beziehung stehende Tabellen ermöglicht eine sehr strukturierte Speicherung von Daten, da in eine Tabelle immer nur Informationen über eine Art von Objekten abgelegt werden sollten, wobei es sich bei diesen Objekten sowohl um reale Dinge wie zum Beispiel Personen oder Fahrzeuge als auch um abstrakte Dinge wie beispielsweise Verleihvorgänge handeln kann. Diese Art der Speicherung erfüllt einen weiteren wesentlichen Zweck: die Vermeidung von Redundanz. Dieser Begriff bezeichnet im Kontext von Datenbanken die mehrfache Speicherung der gleichen Information. Redundanz bedeutet nicht nur den unnötigen Verbrauch von Speicherplatz, sondern kann bei ihrem Vorhandensein innerhalb einer Datenbank ernsthafte Probleme verursachen, wie das folgende Beispiel aus der Praxis deutlich machen soll. 61 2.2 2 Datenbankgrundlagen In vielen Firmen werden die Daten der Mitarbeiter an mehreren Stellen erfasst. Die Buchhaltung verfügt über ein eigenes Programm zur Gehaltsabrechnung mit den Daten der Mitarbeiter, die Abteilungsleiter haben die Daten der Mitarbeiter ihrer Abteilung ebenfalls erfasst, und der Betriebsrat pflegt eine eigene ExcelTabelle dieser Daten. Bereits bei dieser Speicherung von Daten an nur drei verschiedenen Stellen stellt man bei einer Überprüfung schnell fest, dass die Daten in den seltensten Fällen untereinander abgeglichen sind: Die neue Adresse eines Mitarbeiters wurde nach seinem Umzug nicht in allen drei Datenbeständen geändert, schon lange ausgeschiedene Mitarbeiter wurden nicht gelöscht und so weiter. Übertragen auf eine Datenbank würde dieses Beispiel der Tatsache entsprechen, dass die Mitarbeiterinformationen dreimal innerhalb einer Datenbank abgespeichert worden wären, beispielsweise in verschiedenen Tabellen. Als Konsequenz daraus würde sich die Tatsache ergeben, dass je nachdem, welche Tabelle zur Abfrage herangezogen wird, unterschiedliche Informationen zu einem Mitarbeiter zurückgeliefert würden, eben in Abhängigkeit davon, ob ein aktueller oder veralteter Datensatz als Quelle der Information gedient hat. Mit anderen Worten: Die Korrektheit und Verlässlichkeit der Daten, die auch als Datenintegrität bezeichnet wird, wäre nicht mehr gewährleistet. Eine Datenbank, die nur zufällig korrekte Informationen ausgibt, ist aber praktisch wertlos. Natürlich ist mit der Datenintegrität nicht die absolute Fehlerfreiheit von Daten gemeint: Zwar können Daten während der Eingabe von modernen Datenbanksystemen auf bestimmte Fehler überprüft werden, einen Schutz vor Schreibfehlern bei der Eingabe zum Beispiel eines Vor- oder Nachnamens kann auch das beste Datenbanksystem nicht bieten. Anhand des obigen Beispiels kann abgelesen werden, welche Bedeutung die Vermeidung von Redundanz in Bezug auf die Datenintegrität hat: Wird Redundanz vermieden, also eine Information immer nur einmal an einer Stelle innerhalb der Datenbank gespeichert, entspricht diese Information immer dem letzten, aktuellsten Stand. Die Vermeidung von Redundanz sollte daher bei einem Datenbankentwurf – wie er in Kapitel 3, Logischer Datenbankentwurf, beschrieben wird – immer einen wichtigen Gesichtspunkt darstellen. Die Datenbanktheorie stellt Methoden und Hilfsmittel zur Verfügung, um dieses Ziele zu erreichen. Nachdem der Zusammenhang zwischen dem Vorhandensein von Redundanz und der möglichen Auswirkung auf die Datenintegrität beschrieben wurde, soll nun noch eine –in der praktischen Arbeit mit Datenbanken häufig gestellte – Frage beantwortet werden: Wann genau liegt Redundanz innerhalb einer Datenbank vor? Gerade bei der ersten Beschäftigung mit Datenbanken sorgt dieser Begriff immer wieder für Irritationen. Stellt schon die mehrfache Nennung eines Eintrags – des Wohnorts, der Steuerklasse und so weiter – bei den verschiedenen 62 Relationale Datenbanken Datensätzen einer Tabelle schon Redundanz dar oder nicht? Die folgende Anmerkung soll diesen Aspekt erläutern: Der Begriff Redundanz wird häufig falsch interpretiert. Ist zum Beispiel in einer Tabelle, in der die Daten von Mitarbeitern erfasst werden, eine Spalte vorhanden, in der die Abteilung des Angestellten (Lager, Versand, Buchhaltung etc.) erfasst wird, so stellt das mehrfache Vorkommen dieser Begriffe in der Spalte keine Redundanz dar! Redundanz würde in diesem Fall erst dann entstehen, wenn an mehreren Stellen innerhalb der Datenbank die Information erfasst würde, dass ein bestimmter Angestellter seiner jeweiligen Abteilung zuzuordnen ist. Auch wenn die Vermeidung von Redundanz ein Hauptmerkmal des Entwurfs von relationalen Datenbanken darstellt, so kann das Auftreten von Redundanzen nicht immer vermieden werden. Innerhalb einer Firma könnten zum Beispiel zwei oder mehrere Datenbanken Verwendung finden, deren Datenbestand sich teilweise überschneidet. In diesem Fall muss sichergestellt sein, dass Änderungen von Datensätzen in der einen Datenbank auch auf die anderen, redundanten Datensätze anderer Datenbanken übertragen werden. Man bezeichnet diesen Sachverhalt als die Wahrung der Datenkonsistenz. 2.2.1 Struktureller Aufbau von Tabellen Da Tabellen die elementaren Bestandteile von relationalen Datenbank darstellen, sollen anhand von Abbildung 2.3 einige mit Tabellen in Zusammenhang stehende Begriffe erklärt werden. Dargestellt ist der Auszug einer Tabelle aus der im SQL Server 2005 enthaltenen Beispieldatenbank AdventureWorks. Diese Beispieldatenbank bildet die Vorgänge innerhalb einer Firma ab, die sich mit der Herstellung von Fahrrädern beschäftigt. Die abgebildete Tabelle enthält Informationen über Produkte, die von dem Fahrradhersteller eingekauft beziehungsweise verkauft werden. Die AdventureWorks-Datenbank ist weitaus umfangreicher und komplexer als die in früheren Versionen des SQL Servers mitgelieferten Beispieldatenbanken pubs und Northwind, die in der neuen Version des Servers nicht mehr enthalten sind. Allerdings erschließt sich – gerade für einen nicht aus dem angelsächsischen Sprachraum stammenden Benutzer – nicht unbedingt sofort, welche Art von Information innerhalb der Tabellen abgespeichert ist. Unter der Internetadresse http://msdn2.microsoft.com/de-de/ms124659.aspx können Sie detaillierte Informationen zu den Tabellen in der neuen Beispieldatenbank sowie Vergleiche zu den ehemaligen Beispieldatenbanken erhalten. 63 2.2 Index - (Subtraktion) 160 !< (Vergleichsoperator) 161 != (Vergleichsoperator) 161 !> (Vergleichsoperator) 161 % (Modulo-Division) 160 % (Platzhalter) 183 (local) 108 * (Multiplikation) 160 * (Platzhalter) 166 + (Addition) 160 + (Zeichenverkettung) 161 .NET 2.0 556 .NET Assembly Loader 561 .NET Framework 2.0 31 .NET Framework 2.0 – Sprachpaket 31 .NET-Assemblies 555 .NET-CLR 1.0 556 1.1 556 2.0 556 .NET-Runtime 555 .NET-Speichermanagement 556 .NET-Thread-Pool 557 .NET-Typen 602 / (Division) 160 ; NULL 179 < (Vergleichsoperator) 161 <= (Vergleichsoperator) 161 <> (Vergleichsoperator) 161 = (Vergleichsoperator) 161 > (Vergleichsoperator) 161 >= (Vergleichsoperator) 161 @@CONNECTIONS 229 @@CURSOR_ROWS 472 @@ERROR 237, 246, 252 @@ERROR-Variable 657 @@FETCH_STATUS 472 @@IDENTITY-Funktion 449 @@LANGUAGE 229 @@MAX_CONNECTIONS 229 @@OPTIONS 229 @@ROWCOUNT 237 @@SERVERNAME 229 @@VERSION 229 [] (Klammeroperator) 184 ^ (Umkehrungs-Symbol) 185 _ (Platzhalter) 184 A Abfrage Abbrechen 126 an Datenbankmodul 121 Analysieren 125 auf verschiedene Server 275 Ausführen 125 Duplikate eleminieren 169 Ergebnisse einschränken 174 Ergebnisse sortieren 171 neue 121 Unterabfrage 189 Abfrageausführung 128 abgebrochene 130 erfolgreiche 128, 130 nicht erfolgreiche 130 Abfrageausführung (Optionen) 204 Abfrage-Designer 131 Abfrage-Editor 121 Abfrageergebnis 128 Abfrageergebnisse zusammenfassen 193 Abfrageerstellung, grafische 131 Abfragefenster 121 Abfragen, einfache 163 Abfrageoptimierer 388 Abhängigkeiten, innere 92 Ablaufsteuerung 212 BREAK 218 CONTINUE 219 GOTO 220 IF EXISTS 215 IF...ELSE 213 RETURN 220 WAITFOR 221 WHILE 217 Ablaufverfolgung 506 ABS 237 ABSOLUTE n 464 Absolute Positionsangabe 468 AcceptChanges 827 Access 132, 276 855 Index Accumulate-Methode 619 ACID 516 ADD 309 Addition 160 Administration und Monitoring von CLRObjekten 633 Administrator 80 ADO.NET 733 ADO.NET-Provider 709 AdventureWorks 34, 63, 115, 203, 510 Download 36 Installation 34 Neuinstallation 36 Product Tabelle 64 ProductVendor Tabelle 71 Skript 121 Vendor Tabelle 71 AdventureWorks 씮 Beispieldatenbank AFTER-Trigger 432, 438, 444, 626 Aggregate 618 Aggregate installieren 625 Aggregatfunktionen 186 AVG 187 COUNT 188 MAX 187 MIN 187 SUM 187 Aktivitätsmonitor 543 Filtereinstellungen 545 Aktualisierungsweitergabe 335 Alias 643 Tabelle 266 Aliasname 167, 266 ALL SERVER-Option 627 AllowDBNull 774, 776 ALTER 451 ALTER ASSEMBLY 562 ALTER ASSEMBLY-Statement 562 UNCHECKED DATA-Option 563 VISIBILITY-Option 563 ALTER ASSEMBLY-Statement 씮 UNCHECKED DATA-Option ALTER ASSEMBLY-Statement 씮 VISIBILITY-Option ALTER COLUMN 310 ALTER DATABASE 289 ALTER FUNCTION 416, 424 ALTER LOGIN 348 856 ALTER LOGIN...WITH DEFAULT DATABASE 348 ALTER PROCEDURE 403 ALTER TABLE...ADD 309 ALTER TABLE...ADD CONSTRAINT 321 ALTER TABLE...DROP COLUMN 311 ALTER TABLE...DROP CONSTRAINT 323 ALTER TABLE...NOCHECK CONSTRAINT 323 ALTER TABLE...WITH NOCHECK 322 ALTER TABLE…ALTER COLUMN 310 ALTER TRIGGER…ON 444 ALTER TYPE-Statement 608 ALTER USER 369 ALTER USER...WITH DEFAULT_SCHEMA 369 ALTER VIEW...AS 376 ALTER XML SCHEMA COLLECTION 684 American National Standards Institute 151 Analyse der zu erfassenden Informationen 94 von Beziehungen 94 Analyse starten 510 Analysieren 125 Analysis Services 105 AND 162, 163 Ändern einer Sicht 376 Ändern und Löschen von benutzerdefinierten Funktionen 424 Änderungsweitergabe 318 Anmeldedialog 104 ANSI 151 ANSI SQL-92-Standard 618 ANSI-konforme Abfragen 638 Anweisungsberechtigungen 353 AppDomain 558 Application Domain 557, 558 Application Domain Management 558 Application Domain 씮 AppDomain Arbeitsauslastung 505 ArgumentException-Klasse 608 ArgumentOutOfRangeException-Klasse 616 Aristoteles 161 Arithmetische Operatoren 160 Array 457 AS 167 ASCII 233, 234 Index AS-Schlüsselwort 650 Assemblies ALTER ASSEMBLY 562 CREATE ASSEMBLY 562 PERMISSION_SET 564 Sicherheitsstufen 563 Sourcecode 562 Verwaltung 562 Assemblies installieren 562 Assemblies Loading 557 Assemblies verwalten 562 Assembly 558 Assembly bereitstellen 577 Assembly kompilieren 568 Assembly Loader 561 Assembly mit sqlcmd bereitstellen 578 Assembly ohne Visual Studio kompilieren 577 Assembly Resolver 557 Assembly-Management 556 Assembly-Versionierung 562 atomar 88 Atomarität 516 Atomicity 516 Atribut elementares 89 Attribut 66, 88 atomares 88 Attributwerte, Liste von 89 Auflösung einer m:n-Beziehung 95 Ausführen 125 Ausführung der Abfrage abbrechen 126 Ausführungskontext 559 Ausführungsplan 388, 584 Ausgaben mit PRINT und SELECT 201 Ausgabestrom steuern 594 Äußere Verknüpfung 270 Auswahloperatoren 179 BETWEEN 181 IN 182 LIKE 183 Auswertungsreihenfolge 160 Authentifizierung 104, 109, 342 gemischter Modus 39 SQL Server 39, 109, 342 Windows 109, 342 Windows-Authentifizierung 39 Authentifizierung 씮 Authentifizierungsmodus Authentifizierungsmodus 38 AutoIncrement 774 AUTO-Modus 695 AVG 187 B balanced tree 482 Bankleitzahl 70 Barcode 70 Basistabelle 372, 447 batch 203 Batchtrennzeichen 203 B-Baum 482 bcp 339 BEGIN 212 BEGIN TRANSACTION 522 BEGIN TRY 658 BeginEdit 799 Begrenzte Bezeichner 154 Beispieldatenbank 34 Northwind 36 pubs 36 Benutzedefinierte Fehler 씮 Fehler Benutzer 347 Benutzerassemblies 559 Benutzerdefinierte Aggregate 554, 618 Benutzerdefinierte Aggregate installieren 625 Benutzerdefinierte Aggregate installieren 씮 Aggregate installieren Benutzerdefinierte Datentyp Erstellen 604 Benutzerdefinierte Datentypen 554 Zugriff vom Client 617 Benutzerdefinierte Fehler 255 Anzeige 257 Auslösung 257 Erstellung 255 Löschen 262 Nicht vordefinierter 258 Benutzerdefinierte Fehler in Landessprache 260 Benutzerdefinierte Funktion 413, 554, 580 Ändern 416, 424 Aufruf mit EXECUTE 416 Darstellung im Objekt-Explorer 415 Fehlerbehandlung 414 857 Index Inline 418 Löschen 416, 424 Maximale Anzahl Eingabeparameter 413 Rückgabedatentyp 414 Skalarwert 414 Standardwerte 413 Tabellenwert 418 Tabellenwert mit mehreren Anweisungen 422 Übersicht 413 Benutzerdefinierte Funktion 씮 UDF Benutzerdefinierte Funktion 씮 User definied Functions Benutzerdefinierte Serialisierung 613 Benutzerdefinierte Trigger 554, 626 Benutzerdefinierte Trigger installieren 632 Benutzerdefinierte Trigger installieren 씮 Trigger installieren Benutzerdefinierte Typen 602 Aktualisieren 612 Benutzerdefinierte Typen 씮 User Defined Types Benutzername 109 Benutzerverwaltung 341 Aktivierung 360 Aliasname 348 Datenbankzugriff erteilen 346 Deaktivierung 360 Eigenschaften eines Benutzers anzeigen 345 Guest 364 Login 342 SQL Server-Login einrichten 344 Standardschema zuweisen 369 Windows-Login einrichten 343 Zusammenfassung zu Rollen 349 Zuweisung einer Rolle 352 Zuweisung einer Standarddatenbank 348 Berechnete Spalten 168 Berechtigung Entziehen 354 Gewähren 354 Verweigern 354 Berechtigungen 350 An Benutzer und Rollen vergeben 353 Anweisungs 353 erben 350 Objekt 353 858 Vergeben 356 Weitergeben 357 Berechtigungen 씮 Rechte Berichtsdatei 126 Beständigkeit 516 BETWEEN 181 Bezeichner 153 begrenzte 154 reguläre 154 Bezeichner 씮 Name Bezeichner 씮 SQL Beziehung 75 1:1-Beziehung 75, 94 1:n-Beziehung 76, 95 m:n-Beziehung 77, 95 bigint 155 Bildlauffähiger Cursor 465 BINARY BASE64 700 BinaryReader-Klasse 614 BinaryWriter-Klasse 614 BindingContext 809 BindingNavigator 814 BindingSource 812 Bit 155 Block 212 BLZ 70 BOL 134 Bookmark 142 Books Online 134 BREAK 218 B-Tree 482 bulk copy 338 bulk copy program 339 BULK INSERT 338 BULK INSERT-Statement 609 bulkadmin 350 C C++ 552, 553 Cache 518 Caches 555 CALLED ON NULL INPUT-Option 582 CancelEdit 799 CASCADE 319 case sensitive 153 CASE-Funktion 222 einfache 222 komplexe 225 Index Wertezuweisung durch 227 CAST 239 CATCH 406 CATCH-Block 247, 599, 658 CHAR 233, 234 char(n) 155, 156 CHARINDEX 233, 235 CHECK 312, 316, 428, 431 CHECK CONSTRAINT 323 CHECK OPTION 379 CHECKPOINT 519, 527 Client 59, 79, 457 CLOSE 471 Close (Connection) 746 CLR 551 Betriebssystemoperationen 556 Hosting-API 558 Integration 551 Tasks 557 CLR 2.0 558 CLR enabled 567 CLR Execution Performance Counter 636 CLR vs. T-SQL 567 CLR-Datentypen 576 CLR-Funktionen 584 CLR-Hosting 556 CLR-Hosting 씮 Host CLR-Integration 555 CLR-Objekte 568 CLR-Objekte administrieren 633 CLR-Objekte administrieren 씮 Administration und Monitoring von CLR-Objekten CLR-Objekte, Laufzeitinformationen 634 CLR-Objekte, Laufzeitinformationen 씮 Laufzeitinformationen CLR-Profiler 씮 Profiler CLR-Sicherheitsstufen 563 CLR-Sicherheitsstufen 씮 EXTERNAL_ACCESS CLR-Sicherheitsstufen 씮 SAFE CLR-Sicherheitsstufen 씮 UNSAFE CLR-Unterstützung aktivieren 565 CLR-Unterstützung per Skript aktivieren 567 CLR-Unterstützung per Skript aktivieren 씮 clr enabled CLR-Unterstützung per Skript aktivieren 씮 RECONFIGURE CLR-Unterstützung per Skript aktivieren 씮 sp_configure CLUSTERED 490, 493 Codd, Dr. Edgar Frank 60 Code Access Security 560 Command 751 CommandText 761 COMMIT TRANSACTION 522 Common Language Runtime 551 Common Language Runtime 씮 CLR Common Table Expressions 648 Common Table Expressions 씮 CTE COM-Objekte 553 Einbindung 553 COM-Objekte 씮 C++ COMPUTE 199 COMPUTE BY 200 CONNECT 360 Connection 740 Connection (Eigenschaft) 751 ConnectionString 741 Consistency 516 Constraint 312, 450, 584, 777 contains() 688 Context 589 CONTINUE 219 ContinueUpdateOnError 842 Controller 299 CONVERT 239 COUNT 188 COUNT(*) 189 COUNT(DISTINCT) 188 CPU-Management 556 CREATE 451 CREATE ASSEMBLY 562 CREATE ASSEMBLY-Statement 562, 578 CREATE DATABASE 277 CREATE FUNCTION 414, 418, 422 CREATE FUNCTION-Statement 581, 585 CREATE INDEX...ON 490 CREATE LOGIN 343 CREATE LOGIN...FROM WINDOWS 343 CREATE LOGIN...WITH PASSWORD 344 CREATE PROCEDURE...AS 390 CREATE PROCEDURE-Statement 578 CREATE ROLE 352 CREATE SCHEMA 368 CREATE SCHEMA...AUTHORIZATION 368 859 Index CREATE TABLE 305 CREATE TRIGGER...ON 432, 440 CREATE TRIGGER...ON ALL SERVER 451 CREATE TRIGGER...ON DATABASE 453 CREATE TRIGGER-Statement 632 CREATE TYPE-Statement 608 CREATE USER 347 CREATE USER...FOR LOGIN 347 CREATE VIEW...AS 374 CREATE VIEW...AS...WITH CHECK OPTION 380 CREATE XML INDEX 692 CREATE XML INDEX 씮 XML CREATE XML SCHEMA COLLECTION 683 CREATE_DATABASE 451 CROSS APPLY-Statement 639 CROSS JOIN 272 Crystal Reports 105 CTE 648 CurrencyManager 809 Cursor 457 Aktualisierungsoptionen 460 Automatisches Durchlaufen 472 Bildlauffähiger 460 Daten in der Auswahl aktualisieren 477 Daten in der Auswahl löschen 477 Datensätze abrufen 462 Dynamischer 460 -ende 469 erstellen 459 FETCH-Anweisung 462 Funktionen 472 Funktionsweise 457 Lese- 460 Löschen 471 Nichtsperr- 460 Öffnen 461 Positionsangabe 464 Schließen 471 Serverseitiger 458 Sperr- 460 Sperroptionen 460 Statischer 460 Struktur 461 Verwendung von Positionsangaben 463 Vorwärts- 460 Zugriffsoptionen 460 Customer (Bibliothek) 562 860 D d (Platzhalter) 259 Data Control Language 152 Data Definition Language 152, 451 Data Manipulation Language 152, 429 Data Query Language 152 Data Transformation Services 50, 106 DataAccess-Parameter 581, 610 Database Consistency Checker 296 database owner 367 DataBindings 808 DataColumn 790 DataColumnCollection 790 DataColumnMapping 786 DataColumnMappingCollection 775, 786 DataGridView 806 Data-Mart 105 DataMember 812 DataReader 754 DataReader-Klasse 592 DataRecord-Klasse 589 DataRelation 777, 793 DataRelationCollection 794 DataRow 790 DataRowCollection 790, 801 DataRowState 801 DataRowVersion 791, 802 DataRowViewState 826 DataSet 766, 781 DataSource 812 DataTable 774, 788, 789 DataTableCollection 783 DataTableMapping 785, 786 DataTableMappingCollection 775, 784 Data-Warehouse 105 DATEADD 230, 232 DATEDIFF 230, 233 Datei öffnen 121 Dateigruppe 279, 292, 308 Datei-ID 481 Dateivergrößerung 281 Daten in der Cursorauswahl 477 Datenabfragesprache 152 DATENAME 231 Datenbank 112 Ändern 289 Auswahl durch USE 164 Benutzerdefiniert 112 Index Dateien löschen 292 Erstellung 277 Erstellung mit mehreren Dateien 286 für die Arbeitsauslastungsanalyse 510 Grundlagen 59 Historische 60 Inhalt 115 Kopie 115 Löschen 286 Physische 80 Relationale 61 Standard 124 Struktur 115 System 112 Verkleinern 295 Verwaltung 79 Datenbankdateien 278 Eigenschaften ändern 291 Hinzufügen 289 Nachträgliche Änderung 289 Datenbankdateien verkleinern 297 Datenbankdiagramm 115 Ausdruck 118 Erstellung 115 Seitenumbrüche anzeigen 118 Speicherung 119 Tabelle entfernen 118 Tabelle hinzufügen 116, 118 Tabellen anordnen 117 Unterstützung installieren 116 verknüpfte Tabellen hinzufügen 119 Datenbankentwurf 85 Denormalisierung 97 Grundlagen 85 Normalisiert 86 Datenbankmanagementsystem 78 Hauptaufgabe 81 Struktur 79 Datenbankmodul 104, 107 Datenbankmodul-Abfrage 121 Datenbankmodul-Optimierungsratgeber 505 Datenbankobjekte, temporäre 114 Datenbankoptionen 499 Datenbankrollen benutzerdefiniert 352 feste 351 Datenbanksicherung 114 Datenbanksnapshot 115 Datenbanktrigger 454 Datenbankzugriff erteilen 346 Datendatei 279 Primär 278 Sekundär 278, 286 Datendefinitionssprache 152 Datenintegrität 62, 312, 556 Datenkonsistenz 63, 431 Datenmanipulation auf Sichten 446 Datenmanipulationssprache 152 Datenprovider 740 Datensatz Ändern 332 Einfügen 327 Kopieren 336 Löschen 335 Manipulation 327 mit IDENTITY-Wert einfügen 331 mit NULL und DEFAULT eingeben 329 Datensteuerungssprache 152 Datentypen 602 Datentypen in SQL Server 64 bigint 155 bit 155 char(n) 155 datetime 155 decimal 155 float 155 money 155 nchar(n) 155 numeric 155 nvarchar(n) 155 real 155 smalldatetime 155 smallmoney 155 TABLE 425 tinyint 155 varchar(n) 155 Datenzugriffs-API 709 DATEPART 230, 232 DATEPART-Funktion 583, 645 datetime 155, 156 Datums-/Uhrzeitfunktionen 155, 230 Datums-/Uhrzeitwerte 159 DAY 230, 231, 232 DAY-Funktion 102 dayofyear 230 db_accessadmin 351 db_backupoperator 351 861 Index db_datareader 351 db_datawriter 351 db_ddladmin 351 db_denydatareader 351 db_denydatawriter 351 DB_ID-Funktion 495 db_owner 351 db_securityadmin 351 DBCC 296 DBCC CHECKDB 609 DBCC CHECKFILEGROUP 609 DBCC CHECKTABLE 609 DBCC SHOW_STATISTICS 503 DBCC SHOWCONTIG 494 DBCC SHRINKDATABASE 296 DBCC SHRINKFILE 297 DBConcurrencyException 842, 849 dbcreator 350 DBMS 78 dbo 367 DCL 152 DDL 152, 451 DDL-Ereignisgruppen 452 DDL-Trigger 451, 454, 626 DDL-Trigger mit Datenbankbereich 451, 453 DDL-Trigger mit Serverbereich 451 Deadlock 547, 556, 559 Beispiel 549 Opfer 548 Situation 548 Vermeidung 549 DEALLOCATE 471 Debugging 562 decimal 155 DECLARE 205, 459 DECLARE...CURSOR 459 DEFAULT 312, 316, 329, 379, 395, 413, 427 DEFAULT VALUES 332 DEFAULT-Wert 671 deklarative Integrität 450 DELAY 221 DELETE 335, 380, 382, 429, 514 Delete 691, 800 DELETE FROM 335 DeleteCommand 816 deleted 434, 458, 519 DELETED-Tabelle 628, 672 862 Denormalisierung 97 DENSE_RANK-Funktion 664 DENSE_RANK-Methode 665 DENY 354 Detailtabelle 318 Dienst 106, 145 Dienstkonto 38 Dienst-Manager 101, 103 DIFFERENCE 234 DirectoryInfo-Klasse 601 DISABLE TRIGGER...ON 438 diskadmin 350 DISTINCT 169 Division 160 DML 152, 429 DML-Anweisung 445, 514 DML-Trigger 429, 437, 454, 626 Domänenkonto 38 Doppelt verkettete Liste 484 DQL 152 DROP 451 DROP COLUMN 311 DROP DATABASE 286 DROP FUNCTION 416, 424 DROP INDEX 497 DROP PROCEDURE 403 DROP STATISTICS 502 DROP TABLE 311 DROP TRIGGER 441 DROP TRIGGER...ON ALL SERVER 453 DROP TYPE-Statement 608 DROP USER 347 DROP VIEW 376 DROP XML SCHEMA COLLECTION 684 DROP_EXISTING 497 DTS 50, 106 Durability 516 DYNAMIC 460 Dynamische Management-Views 635 Dynamische SQL-Anweisung 241 EXECUTE 241 sp_executesql 242 E E/R-Diagramm 98 Ebene 244 Eigene Fehler auslösen 661 Eigenschaften-Fenster 131 Index Eindeutigkeit 66 Einschränkung 312 Aktivieren 323 Deaktivieren 323 Definition 313 Definition auf Spaltenebene 313 Definition auf Tabellenebene 313 Eigenschaften 314 Löschen 323 Nachträgliche Definition 321 Verwalten 322 Einschränkung 씮 Constraint Einzug Vergrößern 127 Verkleinern 128 Elementar 88 ELEMENTS 700 ELSE-Zweig 213 E-Mail 458 ENCRYPTION 407 END 212 END TRY 658 Endbenutzer-Lizenzvertrag 30 EndEdit 799 Endlosschleife 126 Enterprise Manager 101 Entität 65 Entitätstyp 65 Entity/Relationship-Diagramm 98 Entscheidungstabellen mit PIVOT erstellen 645 Ereignisauswahl 506 Ereignisgruppen 453 Ergebnis 128 in Datei 126 in Raster 126 in Text 126 Ergebnis 씮 Abfrageergebnis Ergebnisbereich 128 error handling 246 ERROR_LINE() 251 ERROR_LINE-Funktion 659 ERROR_MESSAGE() 250 ERROR_MESSAGE-Funktion 659 ERROR_NUMBER() 250 ERROR_NUMBER-Funktion 658 ERROR_PROCEDURE() 250 ERROR_PROCEDURE-Funktion 659 ERROR_SEVERITY() 250 ERROR_SEVERITY-Funktion 658 ERROR_STATE() 250 ERROR_STATE-Funktion 659 ERRORLOG 528 Erstellen einer Sicht 374 Erstellung einer gespeicherten Prozedur 389 Erweiterte gespeicherte Prozeduren 552 Debugging 552 Erweiterte gespeicherte Prozeduren 씮 C++ Erweiterte gespeicherte Prozeduren 씮 Extended stored procedures Erweiterte gespeicherte Prozeduren 씮 XPs EULA 30 EventData-Eigenschaft 631 Event-Parameter 627 Excel 127, 276 EXCEPT-Statement 674 Exclusive lock 531 EXEC 123 EXECUTE 123, 241, 387 EXECUTE AS 411 Benutzername 411 CALLER 411 OWNER 411 SELF 411 ExecuteAndSend()-Methode 593 ExecuteAndSend-Methode 628 ExecuteNonQuery 752, 820 ExecuteReader 754 ExecuteScalar 757 exists() 686 Exklusionsverknüpfung 267 exklusive Oder-Funktion 301 EXPLICIT-Modus 695 Explizite Konvertierung 238 Extended Stored Procedures 552 Extended Stored Procedures 씮 XPs EXTERNAL 596 EXTERNAL_ACCESS 563, 564, 571 F Fallunterscheidung 222 CASE 222 ISNULL 228 Farbcodierung Blau 123 863 Index Dunkelgrau 123 Dunkelgrün 123 Grün 123 Magenta 123 Rot 123 Rotbraun 123 Farbcodierung 씮 Programmcode Fehler 255 Abbruch verursachende 255 Benutzerdefiniert 255 Fehler auslösen 661 RAISERROR-Funktion 661 Fehler auslösen 씮 Eigene Fehler auslösen Fehler auslösen 씮 RAISERROR-Funktion Fehlerauslösung mit Parametern 259 Fehlerbehandlung 246, 657 @@ERROR 246 TRY...CATCH 246 Fehlermeldungen 243 Ebene 244 Meldung 244 Meldungstext 245 Status 244 Zeile 244 Festkommazahlen 155 FETCH...FROM 462 Fiber 555 FILEGROWTH 278, 281, 285 FILENAME 278, 280, 285 Fill 765 FILLFACTOR 492 FillRowMethodName-Parameter 581, 588 FillSchema 774 finally-Block 599 fire a trigger 429 Firewall 709 FIRST 464 FK 70 float 155 FOR DELETE-Klausel 629 FOR INSERT-Klausel 629 FOR UPDATE-Klausel 629 FOR XML-Klausel 695 AUTO-Modus 695 BINARY BASE64 700, 704 ELEMENTS 700 EXPLICIT-Modus 695 PATH-Modus 695 864 RAW-Modus 695 ROOT 700, 701 TYPE 700, 702 XML 695 XMLDATA 704 XMLSCHEMA 700, 703 xsi, nil 702 xsi:nil 702 XSINIL 700, 703 FOREIGN KEY 70, 312, 315, 431 ForeignKeyConstraint 777 FOR-Klausel 643 Formatierung 153 Format-Parameter 603, 618 FORWARD_ONLY 460, 464, 473 Fragmentierung 494, 496 Fremdschlüssel 70, 158 mit NULL-Zulässigkeit 331 Fremdschlüssel 씮 FK Fremdschlüsselverletzung 72 Funktionen 229 Datum/Uhrzeit 230 Fehlerbehandlung 250 Konfigurations- 229 Konvertierung 237 Mathematische 236 Status 237 Zeichenfolge 233 Funktionen bereitstellen 581 Funktionen zur Fehlerbehandlung 250 Funktionen zur Statusabfrage 237 Funktionskörper 415 Funktionsweise 씮 Sicht G Ganzzahlen 155 Garbage Collector 557 Steuerung 557 Gebrochene Besitzerkette 367 Gemischter Modus 39, 110, 342 Geschäftsobjekte 602 Gespeicherte Prozedur 385, 554, 572 Anzeige der Parameter 397 Ausgabeparameter 398 Eingabeparameter 391 ENCRYPTION 407 Erstellen 389 Löschen 403 Index Maximale Größe 387, 402 Maximale Parameteranzahl 402 Optionen 407 Performance-Gewinn 388 Positionsbezogene Übergabe 394 Quelltext 386 RECOMPILE 409 RETURN 403 Rückgabestatuscode 402 verweisbezogene Übergabe 396 Gespeicherte Prozedur mit Visual Studio erstellen 572 Gespeicherte Prozedur 씮 stored procedure GetChildRows 795 GETDATE 231, 232 GetParentRow 795 GetParentRows 795 Gleitkommazahlen 155 Globale Variable 208 GO 203, 389, 454 GOTO 220 GRANT 354 GRANT...WITH GRANT OPTION 357 GROUP BY 197 GROUP BY…HAVING 198 Gruppierte Ranglisten mit Windowing 666 Guest 364 Gültigkeitsbereich von Variablen 207 H Hardwareserver 60 HasErrors 842 Heap 480, 484 HOLDLOCK 542 Host 556 Hosting Layer 559 Hosting-API 558 HostProtection-Attribut 561 hour 230 HTML 680 HTTP 709 I I/O-Zugriffe 557 IBinarySerialize-Interface 613, 623 Identitätsspalte 307 IDENTITY 307, 331, 449, 458 IDENTITYCOL 307 Identity-Spalten 671 IEnumerable-Interface 584, 587 IF EXISTS 215, 274 IF…ELSE 213 IF-Zweig 213 IIS 33 IL-Code 561 Impersonalisierung 564, 597 Impersonate-Methode 598 Implementierung der Datenintegrität 312 implizite Konvertierung 238 IN 182 Index 479 Automatische Erstellung 493 B-Baum 482 Blattebene 482, 487 clustered 480 Durchlaufen eines 483 Erstellung 490 Fragmentierung 494, 496 Füllfaktor 492 Geeignete Spalten 504 Gruppierter 480, 484 leaf-level 482 löschen 497 Manuelle Erstellung 490 Maximale Anzahl nicht gruppierter Indizes 483 Neuerstellung 497 Nicht geeignete Spalten 504 Nicht gruppiert 482 Nicht gruppiert auf Heap 480 Nicht gruppierter 480 Nicht gruppierter auf gruppiertem 487 Oberste Seite 482 Planung 503 root 482 Schlüsselwerte 482 Seite 482 Stamm/Wurzel 482 Statistiken 498 Struktur 479, 481 Umwandlung 486 Uniqueifier 487 Verwalten 494 Index 씮 balanced tree 865 Index Index 씮 B-Baum Index 씮 B-Tree Indextypen 692 Indizierung von XML-Feldern 692 InfoMessage (Ereignis) 591, 748 Informationen über den Fehler ermitteln 658 Informationsschemasichten 382 Initialisierung 206 Init-Methode 619 Inkonsistenz 532 Inlinefunktion 418, 422 In-Memory ADO.NET-Datenprovider 588 INNER JOIN 267 Umkehrung der Funktionsweise 273 Innere Verknüpfung 267 INSERT 327, 379, 381, 429, 514, 691 INSERT INTO...DEFAULT VALUES 332 INSERT INTO…VALUES 327 INSERT…SELECT 336 InsertCommand 816 inserted 434, 458, 519 INSERTED-Tabelle 628, 672 Instanz 107 Benannte 36 Standard 36, 107 instawdb.sql 121 INSTEAD OF-Trigger 432, 440, 444, 626 INSTEAD OF-Trigger, Verwendung mit Sicht 446 int 155 integer 155 Integrated Security-Option 601 Integration Services 50, 106 Integrität Deklarative 450 Prozedurale 450 Integritätsarten 81 Benutzerdefinierte 82 Domänen 82 Entitäts 82 Referenzielle 82 Intellicense 121 Intermediate Language 561 International Standards Organization 151 Interne Transaktionsverarbeitung 518 Internet 709 Internet Information Server 33 866 INTERSECT-Statement 674 Intranet 709 INullable-Interface 604 is_event_logged 245 ISBN-Nummer 69, 89 IsByteOrdered-Parameter 603 IsDeterministic-Parameter 581, 610 IsFixedLenght-Parameter 603 IsInvariantToDuplicates-Parameter 619 IsInvariantToNulls-Parameter 619 IsInvariantToOrder-Parameter 619 IsMutator-Parameter 610 ISNULL 228 IsNullIfEmpty-Parameter 619 IsNull-Methode 604 ISO 151 ISO SQL-2003-Standard 679 Isolation 516 Isolationsstufe Eigenschaften 540 Informationen über 540 READ COMMITTED 535 READ UNCOMMITTED 533 REPEATABLE READ 536 SERIALIZABLE 538 Isolationsstufe 씮 SERIALIZABLE Isolationsstufen auf Verbindungsebene 532 IsPrecise-Parameter 581, 610 isql (Dienstprogramm) 147 IsSendingResultsets-Eigenschaft 597 Iterator 584 J Jahr 230 JDBC 709 JIT-Image 558 JOIN-Operator 265 CROSS JOIN 272 INNER JOIN 267 LEFT OUTER JOIN 270 Mehrfache Anwendung 271 OUTER JOIN 270 RIGHT OUTER JOIN 270 Just-In-Time-Kompilierung 558 Index K Kalenderwoche 230 Kartesisches Produkt 272 Kennwort 109 Speicherung 109 Kennzeichnung 158 von Datums-/Uhrzeitwerten 159 von Zahlenwerten 159 von Zeichenketten 159 Klammeroperator 184 Klassenbibliotheken 568 Kommentar 123, 159 Block 159 Entfernen 127 Hinzufügen 127 Zeilen 159 Kompatibilität festlegen 637 Kompatibilität festlegen 씮 sp_dbcmplevel Konfigurationsfunktionen 229 Konfigurations-Manager 145 Konsistenz 516 Konvertierung 238 Explizite 238 Implizite 238 Informationsverluste 240 Konvertierungsfunktionen 237 Kopfgesteuerte Schleife 217 Kreuztabellen in flache Listen transformieren 647 Kreuztabellen mit PIVOT erstellen 641 Kreuzverknüpfung 272 L language_id 245 LAST 464 Laufzeitinformationen 634 LEFT 233 LEFT OUTER JOIN 270 Leistungsindikator 635, 636 LEN 234 Lesezeichen 142 Aktivieren 144 Deaktivieren 144 in Ordner gruppieren 144 Löschen 144 Umbenennen 144 Umschalten 143 Zugriff auf 144 Lesezeichen 씮 Management Studio Lesezeichenfenster 142 LIKE 183 Linke äußere Verknüpfung 270 localhost 108 LOG 278, 527 LOG ON 278 Login 342 Logische Operatoren 161 AND 162 NOT 162 OR 162 Lokale Administratoren 363 Lokale Variable 205, 208 Lokales Systemkonto 38 Loop-Back-Connection 552 Löschen einer gespeicherten Prozedur 403 Löschen einer Sicht 376 Löschweitergabe 318, 336 LOWER 234 LTRIM 234 M Managed Code 553, 555 Management Studio 103 Abfrage-Designer 131 Eigenschaften-Fenster 131 Ergebnisbereich 128 Lesezeichen 142 Lesezeichenfenster 142 Oberfläche 110 Registrierte Server 145 Skript-Generierung 141 Vorlagen-Explorer 137 Management Studio 씮 SQL Server Massenkopieren 338 bcp 339 BULK INSERT 338 master 112 Mastertabelle 318 Mathematische Funktionen 236 MAX 187 MaxByteSize-Parameter 603, 619 MaxLength 774, 776 867 Index MAXSIZE 278, 281, 285 Mehrfache JOIN-Anweisungen 271 Mehrtabellenabfragen 265 Meldungen 128, 244 Meldungstext 245 Mengenlehre 61 Merge-Methode 619 Message 252 message_id 245 Methodenüberladungen 569 Microsoft Developer Network 34 Microsoft SQL Native Client 31 Microsoft.SqlServer.Server-Namespace 575, 581, 590 Millisekunde 230 MIN 187 Minute 230 Mirroring 301 MissingMappingAction 788 model 114, 281, 285 MODIFY FILE 291 modify() 686 Modulo-Division 160 Monat 230 money 155, 156 MONTH 231, 232 month 230 mscorlib.dll 560 msdb 114 MSDE 26 MSDN 34 mssqlsystemresource 113 Multiplikation 160 Mutator-Methoden 611 Neustart 114 NewRow 800 NEXT 464 NICHT 162 NOCHECK CONSTRAINT 323 NOCHECK CONSTRAINT ALL 323 Node Table 692 nodes() 686 NOLOCK 542 NONCLUSTERED 480, 491, 493 Normalformen 86 Normalisierung 85 praktische Anwendung 93 Normalisierungsregeln 86 1. Normalform 88 2. Normalform 90 3. Normalform 92 Normalisierungsregeln 씮 Datenbankentwurf Normalisierungsregeln 씮 Normalformen IS 179 NOT 162, 163 NTILE-Funktion 664 NTILE-Methode 669 NTLM 709 NULL 179, 206, 329, 395 Null-Eigenschaft 604 NULL-Wert 570, 671 NULL-Zulässigkeit 306 Number 252 numeric 155 nvarchar(n) 155, 156 N O/R-Mapper 602 OBJECT_ID-Funktion 407, 495 Objektberechtigungen 353 Objekt-Explorer 111 Objektverwaltung 366, 367 ODBC 552, 709 ODBC-Treiber 31 ODER-Verknüpfung 162 Office-Dokumente 680 OLAP 105 OLE DB 709 OLE DB-Provider 31 OLEDB 552 OleDbConnection 740 Nachteile 씮 Extended Stored Procedures NAME 278, 280, 285 Name 153 Named Pipes 709 Name-Parameter 581, 603, 619, 627 Namespace 681 Native Client 31 Native Serialisierung 613 nchar(n) 155, 156 Netzwerkserver 107 Neue Abfrage 121 Neue Ablaufverfolgung 506 868 O Index ON 267, 278, 308 ON DELETE 319 ON UPDATE 319 Online Analytical Processing 105 Online-Banking 70 Onlinedokumentation 102, 134 Dynamische Hilfe 136 Favoriten hinzufügen 136 Filter 136 Hilfefavoriten 136 Index 135 Suchen nach 135 OnNullCall-Parameter 610 OPEN 461 Open (Connection) 745 OPENXML Der OPENXML-Rowset-Provider 705 Ein XML-Dokument in eine Tabelle importieren 706 sp_xml_preparedocument 706 sp_xml_removedocument 708 OPENXML 씮 sp_xml_preparedocument OPENXML 씮 sp_xml_removedocument OPENXML 씮 XML OPENXML-Abfragen 674 Operatoren 123, 160 Arithmetische 160 Auswahl 179 Logische 161 Vergleich 161 Verknüpfung 265 Zeichenkette 161 Operatorenrangfolge 163, 176 Optimierungsratgeber 505 OPTIMISTIC 460 OPTION(MAXRECURSION X) 656 Optionen von gespeicherten Prozeduren 407 OR 162, 163 Oracle 106, 151, 153, 276, 525 ORDER BY-Klausel 171 Orders.dll 562 osql (Dienstprogramm) 147 OUTER APPLY-Statement 639 OUTER JOIN 270 OUTER JOIN-Abfragen 638 OUTPUT 399 OUTPUT-Klausel 671, 672 OUTPUT-Parameter 576 OVER-Klausel 666 P PAD_INDEX 492 page 481 Paging mit ROW_NUMBER 668 PAGLOCK 542 Paketmigrations-Assistenten 50 Parallelität 532 Parameter und Rückgabewerte 570 Parametrisierte Abfragen 757 Parametrisierte Sicht 420 Parität 301 Parse-Methode 604, 605 PARTITION BY-Klausel 666 PATH-Index 693 PATH-Modus 695 PATINDEX 233, 235 PDA 106 Performance Counter 636 Performance und Verfügbarkeit 602 PERMISSION_SET-Parameter 564 Personal Digital Assistant 106 Personalnummer 70 Physischer Speicherort 308, 488 Pipes 590 PIVOT-Anweisung 641 PK 67 Pocket PC 106 Position 481 Positionsmarke 457 POWER 237 Primäre Datendatei 278, 281 Primärer Index 692 Primärschlüssel 66, 158 Kombinierter 67 Vorhandensein 70 Wahl eines 68 Primärschlüssel 씮 Eindeutigkeit Primärschlüsselverletzung 67 PRIMARY 279, 309 PRIMARY KEY 66, 312, 314, 427, 493, 776 PRINT 125, 238, 248, 251 PRIOR 464 Procedure-Objekt 568 processadmin 350 869 Index Produktivumgebung 33, 145 Produktschlüssel 34 Profiler 51, 505, 635 Programmcode, farbige Markierung 121 Programmgesteuerte Fehlerauslösung 257 Programmierung von DML-Triggern 431 Projektion 166 PROPERTY-Index 693 Protokoll 81, 519 Protokolldatei 278, 279, 281 Prozedur 250 Prozeduren mit Visual Studio debuggen 579 Prozeduren vs. Funktionen 567 Prozess 543 Prozess-ID 546 Prozessorauslastung 114 public 351 pubs 86 Pufferüberläufe 559 Q Quartal 230 quarter 230 Query Analyzer 101 Query Engine 584, 673 Query Optimizer 651 query() 686 R RAID-Systeme 298 RAID 0 299 RAID 1 300 RAID 3 301 RAID 5 302 RAISERROR 257, 258 RAISERROR-Funktion 661 RAND 237 RANK-Funktion 664 Ranking- und Windowing-Funktionen 663 Ranking- und Windowing-Funktionen 씮 Windowing-Funktionen RANK-Methode 664 RAW-Modus 695 RDBMS 78 870 Read (DataReader) 756 READ_ONLY 460 READCOMMITTED 542 ReadOnly 774 READUNCOMMITTED 542 ReadXmlSchema 774, 775 real 155 Rechte 350 Rechtevergabe 356 Rechtevergabe an Benutzer und Rollen 353 RECOMPILE 409 RECONFIGURE 567 Recordset 128 Leeres 128 Recovery 527 Redundanz 61 Überprüfung auf 95 Vermeidung von 62 REFERENCES 315 Registrierte Server 145 Reguläre Ausdrücke 553 Reguläre Bezeichner 154 Reiter 121, 142, 247 Ergebnisse 128 Meldungen 128 Rekursionsstufe einstellen 656 Rekursive Abfragen 653 Relation 61, 65 Relationstyp 65 RELATIVE n 464 Relative Positionsangabe 468 Remote Procedure Calls 609 REPEATABLE-Option 674 REPEATABLEREAD 542 replace value of 691 REPLACE-Funktion 646 Reporting Services 105 Ressourcendatenbank 113 RETURN 220, 403 RETURNS 415, 419 RETURNS NULL ON NULL INPUT-Option 582 RETURN-Statement 663 REVERSE 234 REVOKE 354 RIGHT 234 RIGHT OUTER JOIN 270 ROLLBACK TRANSACTION 522 Index ROLLBACK-Statement 660 Rolle 349 Benutzer hinzufügen 352 Datenbank, benutzerdefiniert 352 Datenbank, fest 351 Erstellen 352 Server 350 ROOT 700 ROUND 237 ROW_NUMBER-Funktion 664 ROW_NUMBER-Methode 667, 668 RowError 842 ROWLOCK 542 Rows 790 RowUpdated 847 RowUpdating 847 RTRIM 234 Rückgabecode 402 Rückgabedatentyp 414 S s (Platzhalter) 260 SAFE 563, 571 sa-Konto 562 Schema 341, 366, 683 Erstellen 368 Standardschema zuweisen 369 Schema Collection 683 Schleifenbedingung 217 Schleifenende 218 Schleifenkopf 218 Schleifenkörper 217 Schlüssel 66 Fremd 70 Primär 66 Schlüsselsymbol 158 Schlüsselwort 123 Schriftart 123 schützenswerter Algorithmus 407 SCROLL 460 SCROLL_LOCKS 460 second 230 securityadmin 350 Security-Management 556 Seite 481 Seitennummer 481 Seitenteilung 485 Sekundäre Datendateien 278, 281 Sekundärer Index 693 Sekunde 230 SELECT_Anweisung 164 SELECT…FROM 164 SELECT…INTO 337 SELECT-Anweisung * (Platzhalter) 166 AS 167 Berechnete Spalten 168 COMPUTE BY-Klausel 200 COMPUTE-Klausel 199 DISTINCT 169 Einbindung mehrere Tabellen 265 GROUP BY...HAVING-Klausel 198 GROUP BY-Klausel 197 ORDER BY-Klausel 171 Spaltenliste 166 TOP 194 TOP n 195 TOP n PERCENT 195 TOP n WITH TIES 196 UNION 193 WHERE-Klausel 174 SelectCommand 764, 816 Selektion 174 Send-Methode 590 SendResultsEnd-Methode 594, 601 SendResultsRow-Methode 594 SendResultsStart-Methode 594, 600 SEQUEL 151 Serialisierung 612 SERIALIZABLE 542 Serializable-Attribut 604 Server 59, 457 Ressourcen 60 Verfügbare 107 Server Management Objects 638 Server Management Objects 씮 SMO Server, registrierte 145 serveradmin 350 Servereigenschaften 111 Servername 107, 108 Serverrollen 350 Serverseitigen Datenzugriff mit ADO.NET 588 Servertyp 104 Analysis Services 105 Datenbankmodul 104 Integration Services 106 871 Index Reporting Services 105 SQL Server Mobile 105 Servicepack 46 SET 206 SET DEADLOCK_PRIORITY 549 SET IMPLICIT_TRANSACTIONS 525 SET LOCK_TIMEOUT 541 SET TRANSACTION ISOLATION LEVEL 533 SET-Statement 609 setupadmin 350 Severity 252 severity 245, 662 shared lock 530 Sicherheitsbereich 씮 Extended Stored Procedures Sicherheitshierarchie 341 Sicherheitsrichtlinien 559 Sicht 371, 446 Ändern 376 Datenmanipulationen auf 377 DELETE auf 380, 382 Einsatz 372 Einschränkungen 374 Erstellen 374 im Objektkatakog 375 -Informationsschema 382 INSERT auf 378, 379, 381 Löschen 376 Parametrisierte 420 System- 382 UPDATE auf 379, 381 Verwaltung 374 Sicht 씮 View SIZE 278, 281, 285 Skalar 414 Skalare CLR-Funktionen 580, 582 Skalare CLR-Funktionen erstellen 583 Skalarwertfunktion 414, 423 Skalierbarkeit 709 Skript 121, 141 Skript-Generierung 141 smalldatetime 155, 156 smallint 155 smallmoney 155, 156 SMO 638 SNAC 31 SOAP 709 Softwareserver 60 872 Sortierungseinstellungen 39 SourceTable 785 sp_add_operator 396 sp_addlinkedserver 276 sp_addmessage 255 sp_addrolemember 353, 385 sp_configure 567 sp_dbcmplevel 637 sp_dropmessage 262 sp_executesql 242 sp_help 298 sp_helpdb 284, 298 sp_helpfile 298 sp_helpindex 493 sp_helptext 407 sp_recompile 411 sp_spaceused 298 sp_who 546 sp_xml_preparedocument 706 sp_xml_removedocument 708 SPACE 234 Spalte Definition 305 Hinzufügen 309 Identitäts 307 Löschen 311 NULL-Zulässigkeit 306 Spaltenalias 167 Spaltendefinition 305 Spaltenname 64 Speicherkorruption 559 Speicher-Management 556 Speicherverwaltung 555 Speicherwarnungen 557 Sperre 529 Block 530 Datenbank 530 Datensatz / Schlüssel 530 Ebene 530 Exklusive 531 Gemeinsame 530 Hinweise auf Tabellenebene 541 Information über 542 Seite 530 Tabelle 530 Timeout 540 Sperre 씮 exclusive lock Sperre 씮 shared locks Sperrstufe einer Verbindung 540 Index Spindelsynchronisation 302 Sprungmarke 220 SQL 151 Bezeichner 153 Formatierung 153 SQL Abfrage-Editor 121 SQL Injection 385 SQL Server (Dienst) 145, 146 SQL Server 2000 26, 42, 46, 102 SQL Server 2005 25 Aktualisierung 42 Developer Edition 26 Enterprise Edition 25 Evaluation Edition 26 Express Edition 26 Installation 28 Installationsvoraussetzungen 25 Mobile Edition 27 Standard Edition 26 Systemvoraussetzungen 27 Unterstützte Betriebssysteme 27 Versionen 25 Workgroup Edition 26 SQL Server 7.0 42, 46, 102, 104, 106 SQL Server Agent 147 SQL Server Authentifizierung 39 SQL Server Desktop Engine 26 SQL Server Dienste SQL Server 145 SQL Server Agent 145 SQL Server Integration Services 106 SQL Server Management Studio 103 SQL Server Mobile 105 SQL Server Oberflächenkonfiguration 565 SQL Server Onlinedokumentation 134 SQL Server Profiler 505 SQL Server Profiler-Ereignisse 635 SQL Server, Oberfläche 101 SQL Server-Browser 146 SQL Server-Datentypen 602 SQL Server-Dienste 145 SQL Server 146 SQL Server-Agent 147 SQL Server-Browser 146 SQL Server-Volltextsuche 146 SQL Server-Dienste 씮 Dienst SQL Server-Konfigurations-Manager 145 SQL Server-Volltextsuche 146 sql_identifier 684 SQL-99-Standard 642, 649 SQL-Anweisungen 121 Bearbeiten von 121 SQL-Bereich anzeigen 141 SqlBinary 571 SqlBoolean 571 SqlByte 571 SQLCLR 551, 567 Verwendung 554 sqlcmd (Dienstprogramm) 147 Abfrage ausführen 149 Beenden 149 Parameter 147 sqlcmd-Tool 578 SqlCommand 752 SqlCommandBuilder 817 SqlCommand-Klasse 588, 593 SqlConnection 740 Eigenschaften 747 SqlConnection-Klasse 588, 591 SqlContext-Klasse 588, 590, 598, 627 SqlDataAdapter 763 SqlDataAdapter-Klasse 588, 618 SqlDataReader 754, 756 SqlDataReader-Klasse 591 SqlDataRecord-Klasse 595 SqlDateTime 571 SqlDbType 760 SqlDecimal 571 SqlDouble 571 SqlException 849 SqlFunction-Attribut 581, 588 SqlGuid 571 SqlInfoMessageEventHandler 591 SqlInt16 571 SqlInt32 571 SqlInt64 571 SqlMetaData-Klasse 600 SqlMethod-Attribut 610 SqlMoney 571 SqlParameter 760 SqlParameterCollection 760 SqlParameter-Klasse 588 SqlPipe-Klasse 588, 590, 594 SqlPipe-Klasse 씮 Send-Methode SqlPipe-Objekt 580 SqlProcedure-Attribut 568, 575 SqlRowUpdatedEventArgs 847 873 Index SqlSingle 571 SqlString 571 SqlTrigger-Attribut 626 SqlTriggerContext-Klasse 589 SqlTypes.SqlXml-Klasse 631 SqlUserDefinedAggregate-Attribut 618, 622 SqlUserDefinedType-Attribut 603, 609 SQRT 237 SSIS 50, 106 Standarddateigruppe 309 Standarddatenbank 124 Stapel 207 Stapeltrennzeichen 203 State 252 StateChange (Ereignis) 748 STATIC 460 Statistik Aktualisieren 502 Automatisch aktualisieren 499 Automatisch erstellen 499 Erstellung 500 Informationen über 500, 502 Löschen 502 Statistiken 498 statistische Werte 500 Status 244 Statuscode 403 Stored Procedures 385, 554 Streaming-Funktionen 584 string 123 Striping 299 Strong name 558 Structured English Query Language 151 Structured Query Language 151 Struktur von Fehlermeldungen 243 Stunde 230 SUBSTRING 234 Subtraktion 160 Suche fortsetzen 107 SUM 187 Syntaxprüfung 125 sys.assemblies_modules-View 633 sys.assemblies-View 633 sys.assembly_files-View 633 sys.assembly_types-View 633 sys.databases 495 sys.dm_clr_appdomains-View 635 874 sys.dm_clr_loaded_assemblies-View 635 sys.dm_clr_properties-View 635 sys.dm_clr_tasks-View 635 sys.dm_db_index_physical_stats 495 sys.dm_tran_locks 542 sys.objects 495 sys.sql_modules 407 sys.stats 502 sys.triggers-View 633 sys.types-View 608 sys.xml_schema_collections 685 sys.xml_schema_namespaces 685 sysadmin 350 System Administrator 39 System Administrator (sa) 362 System.* 560 system.data.dll 560 System.Data.SqlClient-Namespace 588 System.Data.SqlServer-Namespace 588 System.Data.SqlTypes 576 System.Data.SqlTypes-Namespace 570 system.dll 560 System.Drawing 561 system.security.dll 560 System.Security.Principal.WindowsIdentity-Klasse 598 System.Security.Principal.WindowsImpersonationContext-Klasse 598 System.Web 561 system.web.services.dll 560 System.Windows.Forms 561 system.xml.dll 560 Systemassemblies 558 SystemDataAccess-Parameter 581 Systemdatenbanken master 112 model 114 msdb 114 mssqlsystemresource 113 tempdb 114 Systemdatentypen 154 Systemfehler, Verhalten bei 520 Systemfunktion 123 Systemkonfigurationsüberprüfung 33 Systemobjekt 123 Systemprozedur 123 Systemsichten 113, 382, 383 Systemtabellen 562 Index T Tabelle 61 Ändern 309 ändern 309 Beziehungen 72 Erstellung 305 Information zu Datentypen 158 Leeren 336 Löschen 311 Physischer Speicherort 308 Spalte ändern 310 Spalte hinzufügen 309 Spalte löschen 311 Spaltendefinition 305 Struktureller Aufbau 63 Temporäre 324 Tabelle 씮 Relation Tabellenalias 266 Tabelleninhalt, Anzeige des 119 Tabellenname 64, 305 Tabellenscan 479, 481 Tabellenseiten 673 Tabellenseiten 씮 Table Pages Tabellenstruktur, Anzeige der 119 Tabellenwertfunktion 418, 423 Tabellenwertfunktion mit mehreren Anweisungen 422 Tabellenwertige CLR-Funktionen 580 Tabellenwertige CLR-Funktionen erstellen 584 TABLE 425 Table Pages 673 TableAdapters 813 TableDefinition-Parameter 581, 588 TableMappings 784 Tables 783 TABLESAMPLE-Klausel 673 REPEATABLE-Option 674 TABLESAMPLE-Klausel 씮 REPEATABLEOption TABLE-Variable 647, 672 TABLOCK 542 TABLOCKX 542 Tabular Data Stream 594 Tag (der Woche) 231 Tag (des Jahres) 230 Tag (des Monats) 230 targetNamespace-Attribut 683 Target-Parameter 627 Tasks 557 tblAutor 320 tblAutorBuch 321 tblBank 320 tblBuch 321 TCP/IP 709 TDS-Format 594 TDS-Format 씮 Tabular Data Stream TDS-Protokoll 709 tempdb 114, 324 templates 137 Temporäre Prozeduren 577 Temporäre Tabelle 324 Globale 325 Lokale 324 Löschen 325 Terminate-Methode 619 Testdatensätze, Erzeugung von 273 text 245 Textdatei 106 Thread-Management 556, 557 Threadmodelle 555 Thread-Pools 555 Threads 556, 557 Thread-Synkronisation 556 TIME 222 Timeout 540, 557 tinyint 155 Tool Tip 102 TOP 194 TOP n 195 TOP n PERCENT 195 TOP n WITH TIES 196 TOP-Klausel 673 ToString-Methode 604, 605 trace 507 TRAN 522 TRANSACTION 522 Transact-SQL 151, 460 Transact-SQL Cursor 460 Transaktion 513 Bestätigen 522 Checkpoint 519 Einführung 513 Explizite 525 Finanz 513 Implizite 525 Interne Verarbeitung 518 875 Index Isolationsstufe auf Verbindungsebene 532 Phantomwert 538 Programmierung 521 Protokoll 519 Prüfpunkt 519 Recovery 527 Rollback 521 Rollforward 521 Rückgängig machen 522 Transaktionsprotokoll 519 Transaktionsprotokolldatei 279 Transformation 677 Trigger 250, 429, 458, 626 AFTER 432 Ändern 444 Anzeige des Quelltext 445 DDL 451 Deaktivieren 437 deleted-Tabelle 434 DML 429 Funktionskörper 439 Implementieren 628 inserted-Tabelle 434 Installieren 632 INSTEAD OF 440 Löschen 441 mit Datenbankbereich 451, 453 mit Serverbereich 451 Programmierung 429 Trigger 씮 deleted Trigger 씮 inserted TriggerAction-Eigenschaft 627 TriggerContext-Klasse 627, 631 TRUNCATE TABLE 336 TRUSTWORTHY-Eigenschaft 596 TRY 406 TRY...CATCH 246 TRY/CATCH-Block 662 TRY…CATCH 252, 414, 522 TRY-Block 247 T-SQL 551 Verwendung 553 T-SQL-Statement 553 Tuning 506 Tupel 65 TYPE 700 Typen als Klassen abbilden 616 Typsysteme 555 876 U u (Platzhalter) 259 Übergabe positionsbezogene 394 verweisbezogene 396 UDF 413 UNCHECKED DATA-Option 563 Uncommited-Status 658 Undo()-Methode 599 UND-Verknüpfung 162 Unicode 157 Unicode-Format 616 UNION 193 UNIQUE 315, 427, 490, 493 Unique 774, 776 UNIQUE Constraint 312 UniqueConstraint 777 Uniqueifier 487 Unique-Indizes 584 UNPIVOT-Anweisung 642 UNSAFE 563, 564 Unterabfrage 209, 216, 274 Unterabfragen 189 Unterschiede zwischen T-SQL- und CLRFunktionen 584 UPDATE 332, 379, 381, 429, 514 Update 815 UPDATE STATISTICS 502 UPDATE...SET 332 UpdateCommand 816 Updateratgeber 42 Analyse-Assistent 48 Anwendung 46 Download 43 Installation 43 Systemvoraussetzungen 43 UpdateStatus 847 UPDLOCK 542 UPPER 234 US-amerikanisch 260 USE 164, 454, 510 User 347 User Defined Aggregates 554 User Defined Functions 413, 554, 580 User Defined Triggers 554 User Defined Types 554, 602 USER-Funktion 365 UTF-16 616 Index V ValidationMethodName-Parameter 603 value() 686 VALUE-Index 693 varchar(n) 155, 156 Variable 205 Deklaration 205 Globale 208 Gültigkeitsbereich 207 Initialisierung 206 Lokale 205, 459 Verwendung 208 Wertezuweisung 206 Wertezuweisung durch Abfrage 209 Wertezuweisung mit SELECT 210 Wertezuweisung mit SET und Unterabfrage 209 Veralteter Ausführungsplan 410 Verarbeitung von hierachischen Daten 653 Verbesserung der Abfrageleistung 479 Verbinden 110 Verbindungsserver 276 Verbindungszeichenfolge 741 Attribute 742 Verfügbare Datenbanken 124 Vergleichsoperatoren 161 Verknüpfungsbedingung 268 Verschachtelte Fehlerbehandlung 662 Verschachtelte Sortierung 173 Versionierung von Assemblies 602 Versionsnummer 47 Vertrauenswürdige Verbindung 110 Vertraute Verbindung 342 Verwendung des Datentyps TABLE als lokale Variable 425 Verwendung eines Rückgabestatuscodes 402 Verwendung von Ausgabeparametern 398 Verwendung von Eingabeparametern 391 Verzögerte Namensauflösung 409 View 371 VISIBILITY-Option 563 Visual Basic 553 Visual Studio .NET 105 Visual Studio 2005 572 Vollgekennzeichneter Namen 275 Vollqualifizierte Bezeichner 366 Vollqualifizierter Name 275, 367 Volltextsuche 680 Vorlage 137 Parameterwerte angeben 139 Vorlagen-Explorer 137 Vorwärtscursor 464 W Wahrheitswerte 162 Währung 155 WAITFOR 221, 550 Wartungsaufgabe 114 Webservices 709 week 230 weekday 230 Wertebereich 155 Wertezuweisung 160 Wertezuweisung an eine Variable 206 WHEN 223 WHERE CURRENT OF 477 WHERE-Klausel 174, 265 WHILE 217 WHILE-Schleife 472 Wiederherstellung beim Systemstart 527 Wildcards 694 Windowing-Funktionen 663 WindowsIdentity-Eigenschaft 598 WindowsIdentity-Klasse 598 WindowsImpersonationContext-Klasse 598 Windows-Systemsteuerung 145, 147 WITH GRANT OPTION 357 WITH NOCHECK 322 WITH PERMISSION_SET-Direktive 578 WITH-Schlüsselwort 650 Wochentag 230 workload 505 Write-Ahead-Protokoll 518 WriteXmlSchema 775 X XACT_ABORT-Anweisung 657 XDR-Schema (XML-Data Reduced) 704 XML 157, 677, 692, 709 ALTER XML SCHEMA COLLECTION 684 Attribute 681 877 Index Binärdaten in XML abbilden 704 CREATE XML SCHEMA COLLECTION 683 Dokumente 682 DROP XML SCHEMA COLLECTION 684 Elemente 681 FOR XML-Klausel 695 Fragmente 682 Indexerstellung 681 Indextypen 692 Indizierung von XML-Feldern 692 Leerzeichen 682 Namespace 681 OPENXML 705 PATH-Index 693 Primärer Index 692 PROPERTY-Index 693 Ressourcenverbrauch 682 Schema Collection 683 Sekundärer Index 693 Standardwerte definieren 683 sys.xml_schema_collections 685 sys.xml_schema_namespaces 685 targetNamespace-Attribut 683 Transformation 695 Typisiertes und untypisiertes XML 681 Validierung 681 VALUE-Index 693 Vor- und Nachteile der XML-Datenspeicherung 679 Wildcards 694 Wohlgeformtheit 681 Wurzelelement 682 XDR-Schema (XML-Data Reduced) 704 XML DML 686 XML DOM (XML Document Object Model) 706 xml:base 691 XML-Daten aufbereiten 695 XML-Daten in einem relationalen Modell speichern 705 XML-Daten konvertieren 683 XML-Datentyp verwenden 682 XML-Feld füllen 682 XML-Feld mit einem Schema verknüpfen 684 XML-Felder anlegen 681 XML-Felder mit einem Schema verknüpfen 683 878 XML-Index 693 xmlns 691 XML-Schemata 683 XPath 685 XQuery 685 xsi:nil 691 xsi:type 691 XML DML after 691 before 691 delete 691 first 691 insert 690 into 691 last 691 replace value of 691 XML 씮 CREATE XML INDEX XML 씮 Indextypen XML 씮 Indizierung von XML-Feldern XML 씮 Namespace XML 씮 Node Table XML 씮 PATH-Index XML 씮 Primärer Index XML 씮 PROPERTY-Index XML 씮 Sekundärer Index XML 씮 VALUE-Index XML 씮 Wildcards XML 씮 XDR-Schema (XML-Data Reduced) XMLDATA 704 XML-Data Modification Language 686 XML-Datenbanken 677 XML-Datentyp 679 exists() 686 modify() 686 nodes() 686 query() 686 value() 686 XML-Dokumentspeicherung 681 XML-Fähigkeiten des SQL Server 2005 678 XmlReader-Klasse 631 XMLSCHEMA 700 XPath 677, 685 XPs 552 XQuery 685 XQuery-Prozessor 692 XQuery 씮 delete XQuery 씮 insert XQuery 씮 replace value of Index XQuery 씮 XQuery-Prozessor XQuery-Prozessor 692 xsi:nil 702 XSINIL 700 XSLT 677 Y YEAR 231, 232 year 230 Z Zahlenwerte 159 Zählervariable 218 Zeichen 155 Zeichenfolgenfunktionen 233 Zeichenketten 123, 159, 233 Zeichenkettenoperator 161 Zeichenverkettung 161 Zeile 244 Zeilen-Endezeichen 153 Zeilennummer 220 Zelle 66 Zwischenspeicher 518 879