O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Microsoft SQL Server 2008 R2 - Das Entwicklerbuch

Book Description

Das umfassende Arbeitsbuch zu SQL Server 2008 R2: Wenn Sie professionell mit dem SQL Server zu tun haben, dann ist dies Ihr Buch! SQL Server 2008 R2 ist nicht einfach nur ein relationales DBMS, sondern eine komplexe Entwicklungsumgebung mit vielfältigen Angeboten und Herausforderungen für Entwickler. Die Spannbreite reicht von »klassischer« T-SQL-Programmierung über .NET-Programmierung in C# bis hin zur Geodatenverarbeitung und Complex Event Processing. Anhand eines durchgängigen Beispielszenarios werden diese Konzepte nicht nur theoretisch, sondern mit viel Praxisbezug vorgestellt: Über 1.000 Codebeispiele auf CD ermöglichen das direkte Ausprobieren der im Buch behandelten Themen. Auch Administratoren, die sich mit der SQL Server-Programmierung beschäftigen möchten, sind hier gut aufgehoben. Viele der besprochenen Techniken und Hintergrundinformationen lassen sich auch für die Wartung von SQL Servern einsetzen. Themen, wie Indizierung, Sicherheit, Abfrageoptimierung und Monitoring interessieren Entwickler und Administratoren gleichermaßen.

Table of Contents

  1. Microsoft SQL Server 2008 R2 – Das Entwicklerbuch
  2. Einleitung
    1. Wer sind Sie (der Leser)?
    2. Wer sind wir (die Autoren)?
    3. Aufbau des Buchs
      1. Teil A: SQL Server-Grundlagen
      2. Teil B: Transact SQL & die Datenbankmaschine
      3. Teil C: Clients für den SQL Server entwickeln
      4. Teil D: Datenbankobjekte mit .NET entwickeln
      5. Teil E: Beyond relational
    4. Die Begleit-CD
    5. Support
    6. Die Website zum Buch
    7. Danksagungen
  3. I. SQL Server-Grundlagen
    1. 1. Szenarien für SQL Server-Entwickler
      1. Klassische relationale Datenbanken
      2. .NET Inside
      3. Neue Programmierparadigmen in ADO.NET
      4. XML in der Datenbank
        1. Gekoppelte Systeme und SOA
        2. Webservices
        3. Service Broker
      5. Verteilte Daten
        1. SQL Server Integration Services
        2. Replikation
        3. Verteilte Abfragen
      6. Datenanalyse und Darstellung
        1. Reporting Services
        2. Analysis Services
      7. Immer Online: 24*7-Betrieb mit SQL Server
      8. Desktop und mobile Anwendungen
        1. SQL Server Express Edition
        2. SQL Server Compact Edition 3.5
    2. 2. SQL Server-Grundlagen
      1. Erste Schritte mit den Beispielprojekten
      2. Die Komponenten von SQL Server
        1. Die Datenbankmaschine
          1. Instanzen und Datenbanken
          2. Prozesse und Threads
          3. Non Uniform Memory Architecture – NUMA
          4. Das SQL Server Operating System – SQLOS
          5. Die Datenbankmaschine
          6. Kommunikation
          7. Client APIs für SQL Server
          8. Metadatenschnittstellen
          9. Verbindungsserver
          10. SQL Server auf 64-Bit-Systemen
          11. SQL Datenbankmail
          12. Tracing, Profiling und Auditing
          13. Extended Events
          14. Ein paar technische Daten der Datenbankmaschine
        2. SQL Server-Dienste
        3. Die Systemdatenbanken
          1. Systemtabellen und Systembasistabellen
        4. SQL Server-Editionen im Vergleich
          1. Skalierbarkeit und Performance
        5. Hochverfügbarkeit
          1. Programmierbarkeit
          2. Administration
          3. Sicherheit
          4. Integration und Interoperabilität
          5. Business Intelligence
      3. Sicherheit
        1. Authentifizierung
        2. Berechtigungen
        3. Überwachung
        4. Codesicherheit
        5. Kryptographie
    3. 3. SQL Server 2008 R2: Das ist neu
      1. Das ist neu für Entwickler
        1. Neu für Entwickler in SQL Server 2008
          1. Neue Datentypen für Datum und Zeit
          2. Neue Datentypen für geographische Informationen
          3. Ein neuer Datentypen für hierarchische Informationen
          4. Neue Speicherverfahren für Tabellen
          5. Neuerungen in Transact-SQL
          6. Verbesserungen in der Datenbankmaschine
          7. Verbessertes Tracking von Abhängigkeiten
        2. Das kommt in Release 2 hinzu
          1. Complex Event Processing mit StreamInsight
          2. Master Data Management mit den Master Data Services
      2. Das könnten Sie vermissen
        1. Notification Services
        2. Systemeigene Webdienste
        3. SQL Server-Oberflächenkonfiguration
    4. 4. Das Arbeitsbeispiel dieses Buchs
      1. Übersicht über die netShop-Datenbank
        1. Die Aufgabenstellung im Demo-Szenario
        2. Installation der Beispieldatenbank(en)
      2. Der Aufbau der netShop-Datenbank
        1. Das Tabellenschema
        2. Bestell- und Kundendaten
        3. Katalogdaten
        4. Archivdaten
        5. Protokollierung
        6. Weitere Datenbankobjekte
      3. Berechtigungen, Tabellen, Schemata und Synonyme
  4. II. Transact-SQL & die Datenbankmaschine
    1. 5. Die Grundlagen von Transact-SQL
      1. Transact-SQL ist tot – es lebe Transact-SQL!
        1. SQL, Transact-SQL und die ANSI-Standards
        2. Erweiterungen
        3. Neues in Transact-SQL nach SQL Server 2000
          1. Neu in SQL Server 2008
      2. Übersicht über Transact-SQL
        1. Mit T-SQL-Befehlen arbeiten
          1. Wie SQL Server Abfragen verarbeitet
        2. Die elementaren SQL-Befehle
          1. DDL – die Data Definition Language
          2. DCL – die Data Control Language
          3. DML – die Data Manipulation Language
          4. T-SQL-Erweiterungen für die Programmierung
        3. Syntax und Schreibweisen
          1. Die Verwendung von Bezeichnern
          2. Reservierte Worte
          3. Bildung von Namen
          4. Objekt-Präfixe
        4. Formatierung des Quelltextes
          1. Das Semikolon als Trennzeichen für Kommandos
    2. 6. Werkzeuge für T-SQL-Entwickler: Managementstudio & Co.
      1. SQL Server Management Studio
        1. Server registrieren
        2. Mit dem Objekt-Explorer arbeiten
        3. T-SQL-Code bearbeiten
          1. Ergebnis- und Meldungsfenster
          2. Bezeichnungen aus dem Objekt-Explorer übernehmen
          3. Der Abfragedesigner
          4. Projekte verwalten
          5. Abfragen analysieren
          6. T-SQL-Code debuggen
        4. Vorlagen verwenden
        5. Wichtige Tastenkombinationen
      2. Visual Studio 2008-Datenbankprojekte und der Server Explorer
        1. Server-Explorer
        2. Debugger für gespeicherte Prozeduren
      3. Visio für den Datenbankentwickler
        1. Die Möglichkeiten von Visio
        2. Dokumentation durch Reverse Engineering
          1. Ein Datenbankmodelldiagramm vorbereiten
          2. Reverse Engineering einer Datenbank durchführen
          3. Ein Datenbankdiagramm bearbeiten
          4. Auffrischen des Visio-Modells
          5. Das Diagramm im Web veröffentlichen
          6. Datenbankberichte
          7. Unterschiede zwischen den Visio-Versionen
      4. Visual Studio Team Edition for Database Professionals
        1. Verwaltung eines Datenbankmodells
          1. Ein Datenbankprojekt anlegen
          2. Darstellung einer Datenbank in Visual Studio
          3. Objektänderungen durchführen und ausliefern
        2. Vergleich von Schemata
        3. Vergleich von Daten
        4. Refactoring in einer Datenbank
        5. Automatisieren von Datenbanktests
          1. Generierung von Testdaten
          2. Unit Tests
          3. Statische Codeanalyse
    3. 7. Datenbanken einrichten und verwalten
      1. Die Speicherplatzverwaltung von SQL Server
        1. Grundlagen der SQL Server-Speicherwaltung
        2. Datendateien
        3. Das Transaktionsprotokoll
        4. Dateigruppen
      2. Anlegen einer Datenbank
        1. Anlegen einer Datenbank im Management Studio
        2. Anlegen einer Datenbank mit Transact-SQL
        3. Anlegen einer SQL Server-Datenbank in Visual Studio
        4. Dateigruppen anlegen
        5. Datenbankoptionen einstellen
        6. Sortierungen
        7. Die Wiederherstellungsoptionen einer Datenbank
        8. Wiederherstellungsmodelle und Sicherungsstrategien
      3. Datenbanken verwalten
        1. Überblick über die Speicherverwendung verschaffen
        2. Datenbankdateien vergrößern oder neu anfügen
        3. Datenbankdateien verkleinern oder löschen
        4. Eine Datenbank Offline schalten
        5. Eine Datenbank vom Server trennen oder anhängen
        6. Eine Datenbank löschen
      4. Datenbanksnapshots
      5. Performance-Überlegungen
        1. Grundregeln
        2. High Performance-Konfigurationen
    4. 8. Tabellen planen und einrichten
      1. Bestandteile von SQL Server-Tabellen
      2. SQL Server-Systemdatentypen
        1. Numerische Datentypen
        2. Datums- und Zeitangaben
          1. datetime, smalldatetime
          2. date und time
          3. datetime2
          4. datetimeoffset
        3. Zeichenketten
        4. Binärdaten
        5. XML-Daten
        6. Spezielle Datentypen
          1. rowversion
          2. uniqueidentifier
          3. sql_variant
          4. hierachyid
          5. geometry und geography
          6. cursor und table
        7. SQL Server- und .NET Framework-Datentypen
        8. SQL Server- und ANSI-Datentypen
      3. Feldeigenschaften
        1. Null/Not Null
        2. Sortierung
        3. Identität
        4. RowGuid
        5. Erweiterte Eigenschaften
      4. Einschränkungen
        1. Primärschlüssel
        2. Fremdschlüssel
        3. Eindeutigkeit
        4. Wertebereich
        5. Standardwert
      5. Tabellen in der Benutzeroberfläche einrichten
        1. Der Tabellendesigner
        2. Der Ordner Schlüssel
        3. Der Ordner Einschränkungen
      6. Datenbankdiagramme einsetzen
        1. Ein erstes Datenbankdiagramm mit dem Assistenten anlegen
        2. Die Darstellung von Tabellen ändern
        3. Eine Tabellenbeziehung definieren
        4. Eine Tabelle einfügen oder löschen
        5. Die Druckansicht verbessern
      7. Tabellen in T-SQL anlegen und verwalten
        1. Eine Tabelle mit T-SQL anlegen
        2. Den Primärschlüssel hinzufügen: PRIMARY KEY
        3. Abhängigkeit zu anderen Tabellen deklarieren: FOREIGN KEY
        4. Standardwerte vorgeben: DEFAULT
        5. Wertebereiche einschränken: CHECK
        6. Die Eindeutigkeit von Spalten festlegen: UNIQUE
        7. Eine Einschränkung löschen oder deaktivieren
        8. Eine berechnete Spalte anlegen
        9. Eine Spalte hinzufügen oder löschen
        10. Aliasdatentypen in T-SQL
      8. Systeminformation zu Datenbanktabellen
        1. INFORMATION_SCHEMA-Sichten für Tabellen
        2. Katalogsichten und Prozeduren für Datenbanktabellen
      9. Temporäre Tabellen und Tabellenvariablen
        1. Temporäre Tabellen anlegen und verwenden
        2. Temporäre Tabellen versus Tabellenvariablen
      10. Sehr breite Tabellen mit SPARSE DATA optimieren
        1. Ein Szenario für sehr breite Tabellen
        2. Spalten mit Sparse-Attribut einsetzen
    5. 9. Daten abfragen und auswerten
      1. SELECT FROM WHERE à la SQL Server
        1. Einfache Abfragen mit SELECT
        2. Ergebnisspalten umbenennen
        3. Ausdrücke in der SELECT-Liste
        4. T-SQL-Variablen in der SELECT-Liste füllen
        5. Duplikate im Ergebnis vermeiden
        6. Datensätze mit ORDER BY sortieren
        7. Ergebnismengen mit TOP einschränken
      2. Datensätze mit der WHERE-Klausel selektieren
        1. Vergleichsoperatoren
        2. Logische Operatoren in der WHERE-Klausel
        3. Zeichenkettenvergleiche mit LIKE
        4. Datum und Uhrzeit vergleichen
      3. Neue Tabellen mit SELECT INTO anlegen
      4. Tabellen mit relationalen Operatoren verknüpfen
        1. Tabellen mit JOIN verknüpfen
          1. Inner Join
          2. Self Join
          3. Non Equi Join
          4. Outer Join
          5. Cross Join
        2. Tabellenverknüpfungen ohne Join-Operator
        3. Abfrageergebnisse mit UNION kombinieren
        4. INTERSECT und EXCEPT
          1. INTERSECT
          2. EXCEPT
        5. Vorrang der Mengenoperatoren
      5. Daten aggregieren und gruppieren
        1. Aggregatfunktionen
        2. Die Behandlung von NULL-Werten
        3. Beispiele für den Einsatz von Aggregatfunktionen
          1. Eine Warenkorb-Analyse mit COUNT DISTINCT durchführen
          2. Prüfsummen mit CHECKSUM_AGG bilden
        4. Gruppierungen mit GROUP BY und HAVING
        5. Variable Gruppierungen mit Grouping Sets
        6. Mit den Funktionen GROUPING und GROUPING_ID feststellen, welche Zeilen gruppiert wurden
        7. ROLLUP, CUBE und COMPUTE BY
          1. Rollup
          2. Cube
          3. COMPUTE BY
      6. Abfrageergebnisse nummerieren und partitionieren
      7. Unterabfragen
        1. Grundlagen von Unterabfragen
          1. Unterabfragen in einer Select-Liste
        2. Unterabfragen in einer WHERE-Klausel
        3. Spezielle Operatoren für Unterabfragen
          1. Unterabfragen mit IN
          2. Unterabfragen mit ANY und ALL
          3. Unterabfragen mit EXISTS
        4. Korrelierte Unterabfragen
        5. Unterabfragen in der T-SQL-Programmierung
      8. Abfragen als Tabellen: Abgeleitete Tabellen
      9. Common Table Expressions und rekursive Abfragen
      10. Ergebnisse pivotieren
        1. Der PIVOT-Operator
        2. Pivottabellen ohne den PIVOT-Operator generieren
        3. Eine Pivotierung mit dem UNPIVOT-Operator umkehren
      11. NULL IS NULL IS NULL
      12. Stichproben mit TABLESAMPLE generieren
        1. Die Verwendung von TABLESAMPLE
        2. Eine Alternative zu TABLESAMPLE
      13. Verteilte Abfragen
        1. Einrichten eines Verbindungsservers
        2. Ad hoc-Remoteabfragen
    6. 10. Daten manipulieren
      1. Daten einfügen mit INSERT INTO
        1. INSERT INTO eines Datensatzes
        2. INSERT INTO mehrerer Datensätze
        3. INSERT INTO einer Datensatzmenge
        4. Mit IDENTITY arbeiten
          1. Den letzten IDENTITY-Wert beschaffen
          2. INSERT in eine IDENTITY-Spalte
      2. UPDATE
        1. UPDATE mit direkten Werten
        2. UPDATE mit Werten aus anderen Tabellen
      3. DELETE
        1. DELETE auf der Grundlage von Daten aus anderen Tabellen
      4. TRUNCATE TABLE
      5. Masseneinfügen mit BULK INSERT
      6. Mit der OUTPUT-Klausel sehen, was passiert
      7. Einer für Alle: MERGE
        1. Der Aufbau des MERGE-Kommandos
        2. MERGE in Data Warehouses
        3. MERGE versus INSERT, UPDATE und DELETE
    7. 11. Mit Transact-SQL programmieren
      1. Programmiersprachenelemente in T-SQL
        1. T-SQL-Skripte, Batches und gespeicherte Prozeduren
        2. Codeblöcke
        3. Kommentare
        4. Meldungen mit PRINT
        5. Verwendung von Variablen
          1. Einsatzmöglichkeiten von lokalen Variablen
          2. Vordefinierte Systemvariablen
        6. Bedingungen mit IF...ELSE
        7. Schleifen mit WHILE
        8. Sprünge mit GOTO
        9. Dynamische Befehlsausführung mit EXECUTE
        10. Die Verarbeitung mit RETURN beenden
        11. SET-Anweisungen
      2. Ausdrücke in T-SQL
        1. Operatoren
          1. Mathematische Operatoren
          2. Verknüpfungsoperator für Zeichenfolgen
          3. Bitweise Operatoren
          4. Vergleichsoperatoren
          5. Logische Operatoren
          6. Konvertierung von Datentypen
          7. Typumwandlung mit CAST
          8. Typumwandlung mit CONVERT
          9. Konvertierung von NULL-Werten mit ISNULL
        2. CASE-Ausdrücke
      3. Eingebaute Funktionen in T-SQL
        1. Zeichenketten-Funktionen
        2. Datums- und Zeitfunktionen
        3. Mathematische Funktionen
        4. Sicherheitsfunktionen
    8. 12. Indizierung und Partitionierung
      1. Erste Beispiele
      2. Abfragepläne
      3. Grundlagen zu SQL Server-Indizes
        1. Datenstrukturen und Suchverfahren
        2. Füllfaktor
        3. Zugriffsoperatoren
        4. Indexstatistiken und Abfragepläne
        5. Indizes anlegen
        6. Technische Grenzen von Indizes
        7. Indizes im Management Studio anlegen
        8. Indizes mit T-SQL bearbeiten
      4. Indizes pflegen und optimieren
        1. Informationen zu Indizes finden und auswerten
        2. Indizes und Statistiken mit T-SQL warten
        3. Statistiken automatisch aktualisieren
      5. Volltextindizes verwenden
        1. Grenzen konventioneller Indizes
        2. Volltextindizierung
        3. Einen Volltextindex im Managementstudio anlegen
        4. Komponenten der Volltextindizierung
        5. Volltextindizes versus relationale Indizes
        6. Volltextindizes mit T-SQL anlegen und warten
        7. Dokumente indizieren
        8. Volltextabfragen in T-SQL
        9. Mit Stopwortlisten arbeiten
        10. Volltextindzes aufbereiten
      6. Indizes richtig planen
        1. Indizes auswählen
        2. Abgedeckte Indizes
        3. Indizes mit Include-Spalten
        4. Indizes auf berechneten Spalten
        5. Gefilterte Indizes
      7. Partitionierte Tabellen
        1. Eine Partitionierungsfunktion vorbereiten
        2. Ein Partitionierungsschema anlegen
        3. Abfragen gegen partitionierte Tabellen
    9. 13. Sicherheit
      1. Serverbenutzer, Datenbankbenutzer, Schemata und Rollen
        1. Verbindungen und Benutzer
          1. Authentifizierung
          2. Protokollierung von Sicherheitsvorgängen
          3. SQL Server Audit
          4. Server-Anmeldungen verwalten
          5. Metainformationen zu Serverbenutzern
          6. Anmeldeinformationen verwalten
          7. Datenbankbenutzer
          8. Metainformationen zu Datenbankprinzipalen
        2. Schemata
        3. Namensauflösung
        4. Verwaiste Benutzer in einer Datenbank
      2. Berechtigungen und Rollen
        1. Das Rechtesystem auf Serverebene
          1. Feste Serverrollen
          2. Berechtigungen auf Serverebene
        2. Berechtigungen in der Datenbank verwalten
          1. Feste Datenbankrollen
          2. Benutzerdefinierte Rollen
          3. Applikationsrollen
          4. Berechtigungen auf Datenbankebene
          5. Berechtigungen auf Objektebene
          6. Berechtigungen auf Schemaebene
          7. Die effektiven Berechtigungen
          8. Metainformationen zu Berechtigungen
      3. Kryptographie in der Datenbank
        1. Spalteninformationen in einer Datenbank verschlüsseln
        2. Transparente Datenbankverschlüsselung
          1. Grundlegendes zur transparenten Datenbankverschlüsselung
          2. TDE für eine Datenbank aktivieren
          3. Eine verschlüsselte Datenbank sichern und wiederherstellen
          4. Metainformationen für die transparente Datenbankverschlüsselung
    10. 14. Sichten
      1. Mit Sichten arbeiten
        1. Sichten in der Entwicklungsumgebung anlegen
        2. Sichten mit T-SQL bearbeiten
        3. ORDER BY und TOP in Sichten
        4. Beispiele für Sichten
          1. Kunden ohne Bestellungen
          2. Kunden und Bestellsummen
          3. Kunden und Artikel
        5. Daten über Sichten ändern
        6. Die Sichtdefinition verbergen
        7. Sichten mit Schemabindung
        8. Sichten und Sicherheit
      2. Performance-Überlegungen
        1. Abfrageleistung von Sichten
        2. Indizierte Sichten
        3. Partitionierte Sichten
    11. 15. Gespeicherte Prozeduren
      1. Konzepte: Die Wahrheit über gespeicherte Prozeduren
      2. Mit gespeicherten Prozeduren arbeiten
        1. Gespeicherte Prozeduren anlegen
        2. Gespeicherte Prozeduren in T-SQL bearbeiten
        3. Gespeicherte Prozeduren mit einfachen Parametern
        4. Tabellen als Parameter
          1. Benutzerdefinierte Tabellentypen als Voraussetzung für Tabellenwertparameter
          2. Prozeduren mit tabellenwertigen Parametern
        5. Gespeicherte Prozeduren und Sicherheit
          1. WITH EXECUTE AS in Prozeduren
          2. Das Kommando EXECUTE AS
      3. Ausnahmebehandlung
        1. TRY-CATCH-Blöcke
        2. RAISERROR
      4. Beispiele für gespeicherte Prozeduren
        1. Eine Prozedur für das Aktualisieren von Informationen
        2. Eine Prozedur für das Anlegen eines neuen Artikels
        3. Eine Prozedur für das Löschen eines Kunden
        4. Eine Prozedur für das Vorbereiten einer Auftragsübersicht
      5. Performance-Überlegungen
        1. SET NOCOUNT ON
        2. Lebensphasen einer gespeicherten Prozedur
        3. Performanceprobleme bei gespeicherten Prozeduren
          1. Parameter Sniffing
          2. Erzwungene Rekompilierung gespeicherter Prozeduren
        4. Spezielle Prozeduren für Datenschnittstellen
      6. Systemprozeduren und erweiterte gespeicherte Prozeduren
    12. 16. Benutzerdefinierte Funktionen
      1. Einsatz benutzerdefinierter Funktionen
        1. Benutzerdefinierte Funktionen in T-SQL
        2. Benutzerdefinierte Funktionen im SQL Server Management Studio anlegen
      2. Skalarwertfunktionen
      3. Inline-Funktionen
      4. Tabellenwertfunktionen mit mehreren Anweisungen
        1. Der Operator APPLY
      5. Tabellenwertige Parameter
      6. Performance-Überlegungen
        1. Performance-Probleme bei Skalarwertfunktionen
        2. Die Performance von APPLY
    13. 17. Trigger und Ereignisbenachrichtigungen
      1. Trigger in Datenbanken
      2. Konzepte für DML-Trigger
        1. Arbeitsweise von DML-Triggern
        2. Daten in Triggern abrufen
      3. Mit Triggern in Transact-SQL arbeiten
        1. Trigger anlegen
        2. Die Anzahl der Änderungsdatensätze feststellen
        3. Die Trigger-Operation feststellen
        4. Herausfinden, welche Spalten geändert wurden
        5. INSTEAD OF-Trigger
        6. Trigger und Transaktionen
        7. Verschachtelte und rekursive Trigger
      4. Tipps für DML-Trigger
        1. Trigger, die Ergebnisse an den Client liefern
        2. Trigger, die Meldungen an den Client liefern
        3. Den ersten oder letzten Trigger für eine Tabelle festlegen
        4. Trigger und Sicherheit
        5. Trigger und Einschränkungen
        6. Trigger und Replikation
        7. Verzögerte Namensauflösung für Trigger
      5. Einsatzmöglichkeiten und Beispiele für DML-Trigger
        1. Trigger für die Protokollierung von Datenänderungen
        2. Trigger für die Protokollierung von Spaltenänderungen
        3. Trigger für die Überprüfung von Integritätsbedingungen
        4. Trigger für die Durchsetzung von Geschäftsregeln
        5. Trigger für die Pflege von Datenzusammenhängen
        6. Trigger für die Bildung von laufenden Summen
        7. Trigger für das Aktualisieren von Sichten
      6. DDL-Trigger
        1. DDL-Trigger anlegen
        2. Trigger für Logon-Ereignisse
      7. Ereignisbenachrichtigungen statt DDL-Trigger einsetzen
    14. 18. Transaktionen und Sperren
      1. Transaktionen
        1. Transaktionskonzepte
        2. Transaktionen in Transact-SQL
          1. Autocommit Transaktionen
          2. Explizite Transaktionen
        3. Transaktionen verfolgen
        4. Explizite Transaktionen und Fehlerzustände
          1. Transaktionen bei kritischen Fehlern
          2. Transaktionen bei abfangbaren Fehlern
          3. Abfangbare Fehler in einem TRY-CATCH-Block behandeln
        5. Rollback bei nichtkritischen Fehlern mit XACT_ABORT erzwingen
        6. Nicht COMMIT-fähige Transaktionen
        7. Implizite Transaktionen
        8. Verschachtelte Transaktionen und Savepoints
        9. Verteilte Transaktionen
      2. Sperren
        1. Lost Update
        2. Dirty Read
        3. Non-Repeatable Read
        4. Das Phantom-Problem
        5. Das Sperrverhalten von SQL Server
        6. Das Sperrverhalten beeinflussen
          1. Die Isolationsstufe einstellen
          2. Ein Sperren-Timeout einstellen
          3. Sperrhinweise in T-SQL-Kommandos verwenden
        7. Snapshot-Isolation
          1. Funktionsweise der Snapshot-Isolation
          2. Snapshot-Isolation in der Praxis
        8. Sperren im Detail
          1. Sperrtypen
          2. Arten gesperrter Objekte
          3. Die Sperrtypen mit Tabellenhinweisen steuern
          4. Sperren-Eskalation
          5. Deadlocks
          6. Blockierende Prozesse beenden
        9. Sperrinformationen anzeigen
          1. Der Aktivitätsmonitor im Management Studio
          2. Prozess-, Transaktions- und Sperrinformationen mit Transact-SQL auswerten
    15. 19. Serverseitige T-SQL-Cursor
      1. Ein erster T-SQL-Cursor
      2. Mit T-SQL-Cursor arbeiten
        1. Das Deklarieren eines Cursors
          1. Statische Cursor
          2. Keyset-Cursor
          3. Dynamische Cursor
          4. Fast-Forward-Cursor
        2. Das Öffnen eines Cursors
        3. Das Abholen der Ergebnisse
        4. Das Schließen und Entfernen eines Cursors
      3. Beispiele für T-SQL-Cursor
        1. Aufheben sämtlicher Benutzerverbindungen einer Datenbank
        2. Simulation einer Kreuztabelle
        3. Datensatzänderungen auf der Basis eines Cursors
    16. 20. Performance-Optimierungen
      1. Messwerkzeuge
        1. Der Windows Performance-Monitor
          1. Mit dem Performance-Monitor arbeiten
          2. Performance-Indikatoren für ein SQL Server-System
          3. Prozessoren
          4. Prozess
          5. Speicher
          6. Festplatten
          7. SQL Server
        2. Profiler
        3. Eine Ablaufverfolgung einrichten
        4. Serverseitige Traces
        5. Datenbankoptimierungsratgeber
        6. Messungen mit Transact-SQL
          1. Wiederverwendung von Abfrageplänen
          2. API-Cursorverwendung
          3. Wartezustände
        7. Das Performance Data Warehouse
          1. Ein Performance Data Warehouse konfigurieren
          2. Die Arbeitsweise des Performance Data Warehouses
          3. Mit den Performance Data Warehouse-Berichten arbeiten
      2. Die Ausführung von T-SQL steuern
        1. Tabellenhinweise
          1. NOEXPAND
          2. INDEX
          3. FASTFIRSTROW
          4. FORCESEEK
          5. Hinweise für Sperren
        2. Abfragehinweise
        3. Hinweise für relationale Operationen
        4. Hinweise für die Planerstellung und -verwendung
        5. Einen Abfrageplan vorgeben
    17. 21. Administration für Entwickler
      1. SQL Server installieren und konfigurieren
        1. Voraussetzungen
        2. Installation des SQL Server
        3. Installation der Express Edition
        4. Den SQL Server aktualisieren
          1. Service Packs und Hotfixes
          2. Ein Service Pack installieren
        5. Basiskonfiguration einer Server-Instanz
          1. SQL Server-Konfigurations-Manager
          2. Grundeinstellungen für eine Serverinstanz
          3. Einstellungen im Betriebssystem
          4. Einstellungen der SQL Server-Instanz
          5. Die Serverinstanz mit T-SQL konfigurieren
      2. Datenbanken sichern und wiederherstellen
        1. Backup-Verfahren
          1. Regelmäßiges vollständiges Backup
          2. Vollständiges und inkrementelles Backup
          3. Vollständiges, differenzielles und inkrementelles Backup
        2. Wiederherstellungsverfahren
        3. Backup und Restore im Management Studio
        4. Wiederherstellung eines kompletten Servers
        5. Backup und Restore mit T-SQL
      3. T-SQL-Kommandos für das Prüfen von Datenbanken
      4. Administrationsaufgaben automatisieren
        1. Aufträge automatisiert ausführen
        2. Wartungspläne
      5. Ausfallsicherheit konfigurieren
        1. Protokollversand
        2. Datenbankspiegelung
        3. Failover Cluster
  5. III. Clients für den SQL Server entwickeln
    1. 22. Datenzugriff mit ADO.NET
      1. Die Architektur von ADO.NET
        1. ADO.NET als zentrales Framework für den Datenzugriff
        2. Das verbundene Modell von ADO.NET
        3. Das verbindungslose Modell von ADO.NET
          1. Das DataSet als lokaler Datenspeicher
          2. Abbildung von Tabellen
          3. Abbildung von Zeilen
          4. Sichten auf Tabellen
          5. Sichten auf Datenzeilen
          6. Relationen
      2. Eine Verbindung zum Server aufbauen
        1. Die Verbindungszeichenfolge
          1. Server und Datenbank bestimmen
          2. Kommunikationsart bestimmen
          3. Authentifizierungsverfahren festlegen
          4. Weitere Parameter der Verbindungszeichenfolge
          5. Verbindungszeichenfolgen und Monitoring
          6. SQL Server-Version festlegen
        2. Die SqlConnection-Klasse
          1. Verbindungszeichenfolgen mit der ConnectionStringBuilder-Klasse erstellen
        3. Die Rolle des Verbindungspools
          1. Steuern des Verbindungspools
        4. Vorhandene SQL Server-Instanzen ermitteln
        5. Verbindungen mit Berechtigungen steuern
          1. Den Zugriff mit SqlClientPermission einschränken
          2. Der Geltungsbereich von Berechtigungen
          3. Berechtigungen über Attribute steuern
      3. Daten ermitteln und manipulieren
        1. T-SQL-Statements mit der Command-Klasse absetzen
          1. Mehrere Statements ausführen
          2. Ermitteln von Ergebnismengen
        2. Zugriffsart bestimmen
          1. Umgang mit NULL-Werten
          2. Timeout festlegen
        3. Parametrisierte Abfragen absetzen
        4. Umgang mit SQL Server-Datentypen
          1. Umgang mit tabellenwertigen Parametern
          2. Ergebnisse einer Abfrage als Parameter übergeben
          3. Daten mit dem Client synchronisieren
          4. Objektwerte als Parameter übergeben
          5. Umgang mit benutzerdefinierten Typen
        5. Command vs. SQL-String
        6. Gespeicherte Prozeduren aufrufen
          1. Multiple Ergebnismengen konsumieren
          2. Umgang mit Rückgabewerten und Ausgabeparametern
      4. Das verbindungslose Modell
        1. Das DataSet als universeller Datenspeicher
        2. Spalten definieren
        3. Primärschlüssel definieren
        4. Einschränkungen für Tabellen festlegen
          1. Eindeutigkeitseinschränkung definieren
          2. Fremdschlüsselabhängigkeiten festlegen
          3. Lösch- und Aktualisierungsregeln festlegen
        5. Tabellen mit DataRelation verbinden
          1. Relationen erstellen
          2. Einschränkungen steuern
          3. Zeilen aus untergeordneten Tabellen ermitteln
        6. Berechnete Spalten erstellen
        7. Zeilen hinzufügen
          1. Auf das Hinzufügen von Zeilen reagieren
        8. Zeilen entfernen
          1. Auf das Entfernen von Zeilen reagieren
        9. Zeilen selektieren
          1. Auf das Ändern von Zeilen reagieren
        10. Weitere Möglichkeiten der Selektion
        11. Daten aggregieren
        12. Serialisierung von Objekten
          1. Daten als XML exportieren
          2. XML mit der GetXml-Methode ermitteln
          3. Erzeugtes XML anpassen
          4. XML mit der WriteXml-Methode erzeugen
          5. XML-Schemadaten in die Ausgabe einbetten
          6. Änderungen als DiffGram speichern
          7. Binäre Serialisierung
      5. Daten aktualisieren
        1. Änderungen ermitteln
          1. Status von Zeilen ermitteln und ändern
          2. Häufige Fehler
        2. Daten mit Commands aktualisieren
        3. Daten mit der SqlDataAdapter-Klasse aktualisieren
          1. Parameter für die Aktualisierung definieren
          2. Über Ereignisse Einfluss auf die Aktualisierung nehmen
        4. Umgang mit Parallelität
          1. Parallelität mit ADO.NET gewährleisten
          2. Parallelität mit dem timestamp-Typ sicherstellen
        5. Synchronisation von serverseitig generierten Werten
        6. Daten mit gespeicherten Prozeduren aktualisieren
          1. Parameter einer gespeicherten Prozedur definieren
          2. Umgang mit NULL-Werten in Parametern
          3. Die SourceColumnNullMapping-Eigenschaft
        7. Command-Erstellung mit der SqlCommandBuilder-Klasse automatisieren
          1. Parallelität einstellen
          2. Die SetAllValues-Option
          3. Einschränkungen
          4. SqlCommandBuilder und gespeicherte Prozeduren
          5. Daten über gespeicherte Prozeduren aktualisieren
          6. Limitationen von SqlCommandBuilder umgehen
          7. Zugriff auf gespeicherte Prozeduren automatisieren
        8. Massenaktualisierungen optimieren
      6. Verwendung von typisierten DataSets
        1. Aufbau eines typisierten DataSets
        2. TableAdapter und TableAdapterManager
        3. Erstellung von typisierten DataSets mit Visual Studio
          1. Datenbankverbindung festlegen
          2. Abfragetyp festlegen
          3. Abfrage definieren
          4. Erweiterte Optionen festlegen
          5. Methodengenerierung steuern
          6. DataSet-Erstellung starten
          7. Das erstellte DataSet analysieren
        4. Umgang mit verknüpften Tabellen
          1. Relationen zwischen Tabellen erstellen
          2. Zugriff auf verbundene Tabellen
        5. Typisierte DataSets an die Oberfläche binden
          1. Tabellendarstellung anpassen
          2. Daten in formularbasierter Darstellung binden
          3. Detaildarstellung anpassen
      7. Umgang mit binären Daten
        1. Binäre Daten abrufen
        2. Binäre Daten speichern
      8. Umgang mit XML-Daten
        1. XML-Daten mit der FOR XML-Klausel abrufen
        2. Auf das ermittelte XML zugreifen
        3. Umgang mit dem XML-Datentyp
        4. XML-Daten transformieren
          1. Daten in das HTML-Format transformieren
          2. Daten in das CSV-Format transformieren
      9. Fehlerbehandlung
        1. SQL Server-Fehler verarbeiten
          1. Meldungen und Warnungen verarbeiten
        2. Verbindungsunabhängige Fehlerbehandlung
        3. Logische Fehler
    2. 23. Transaktionaler Datenzugriff
      1. Warum clientseitige Transaktionen?
      2. Klassische ADO.NET-Transaktionen
        1. Den Isolationslevel festlegen
      3. Das System.Transaction-Modell
        1. Der Lightweight Transaction Manager
        2. Transaktionen erstellen
        3. Das explizite Programmiermodell
        4. Das implizite Programmiermodell
          1. Implizite Transaktionen mit der SqlConnection-Klasse
          2. TransactionScope steuern
          3. Festlegen, welcher Code in die Transaktion einbezogen werden soll
          4. Transaktion steuern
          5. Timeout festlegen
          6. Interaktion mit COM+
          7. Automatische Transaktionen über die Verbindungzeichenfolge steuern
        5. Das Promotion-Konzept
          1. Promotable Single Phase Enlistment
        6. Umgang mit parallel laufenden Threads
      4. Fazit
    3. 24. Erweiterte Themen
      1. Multiple Active Resultsets (MARS)
        1. Daten mit MARS ermitteln
        2. Einschränkungen
      2. Asynchroner Datenzugriff
        1. Die Verbindungszeichenfolge für den asynchronen Zugriff konfigurieren
        2. Die asynchronen Methoden der SqlCommand-Klasse
        3. Threads synchronisieren
        4. Weitere Möglichkeiten
      3. Ergebnisse mit Abfragebenachrichtigungen überwachen
        1. Die Funktionsweise von Abfragebenachrichtigungen
        2. Abfragebenachrichtigungen in SQL Server aktivieren
        3. Abfragebenachrichtigungen mit ADO.NET
        4. Änderungen analysieren
        5. Verwendung von Abfragebenachrichtigungen in Windows-Anwendungen
      4. Große Datenmengen mit SqlBulkCopy kopieren
      5. Anbieterunabhängiger Datenzugriff
        1. Verfügbare ADO.NET-Datenanbieter ermitteln
        2. Verfügbare Datenbankserver ermitteln
      6. Abrufen von Datenbankmetadaten
      7. Information Schema Views
        1. Aufbau der Information Schema Views
        2. Zugriff auf Information Schema Views
      8. Datenbankschema über SqlConnection ermitteln
      9. Die Metadaten einer Abfrage ermitteln
      10. Metadaten mit SMO ermitteln
        1. Das SMO-Klassenmodell
        2. Server und Datenbankobjekte ermitteln
      11. Datenzugriffsanalyse
        1. SQL Server-Anbieterstatistiken
    4. 25. Daten an die Oberfläche binden
      1. Datenbindung in Windows Forms
        1. Einfache Datenbindung
          1. Eine Datenbindung erstellen
          2. Aktualisierung von Quelle und Ziel steuern
          3. Die Ausgabe formatieren
          4. Umgang mit Nullwerten
        2. Komplexe Datenbindung
          1. Listen binden
          2. Tabellensteuerelemente binden
          3. ComboBoxen binden
          4. In Listen navigieren
          5. Auf den aktuellen Datensatz zugreifen
          6. Datensätze hinzufügen und löschen
        3. Eingaben validieren
          1. Fehler mit dem ErrorProvider anzeigen
          2. Die Validierung steuern
      2. Bindungsfähige Datenklassen erstellen
        1. Die Schnittstelle INotifyPropertyChanged
        2. Die Schnittstelle IEditableObject
        3. Die Schnittstelle IDataErrorInfo
        4. Anzeigeattribute
        5. Die Schnittstellen IBindingList und ICollectionChanged
    5. 26. Einführung in Language Integrated Query (LINQ)
      1. Wie funktioniert LINQ prinzipiell
      2. Der Aufbau einer LINQ-Abfrage
      3. Kombinieren von LINQ-Abfragen und verzögertes Ausführen von LINQ-Abfragen
        1. Faustregeln für das Erstellen von LINQ-Abfragen
        2. Kaskadierte Abfragen
        3. Gezieltes Auslösen von Abfragen mit ToArray oder ToList
      4. Verbinden mehrerer Auflistungen zu einer neuen
        1. Implizite Verknüpfung von Auflistungen
        2. Explizite Auflistungsverknüpfung mit Join
      5. Gruppieren von Ergebnissen
        1. Gruppieren von Listen aus mehreren Auflistungen
        2. Group Join
    6. 27. LINQ to SQL
      1. Object Relational Mapper (O/RM)
        1. Objekt-relationale Unverträglichkeit – Impedance Mismatch
      2. LINQ to SQL oder LINQ to Entities – was ist besser, was ist die Zukunft?
        1. Hat LINQ to SQL eine Zukunft?
          1. Zwischenfazit
        2. Entscheidungshilfe – Gegenüberstellung der wichtigsten Features von LINQ to SQL und LINQ to Entities
      3. Wie es bisher war – ADO.NET 2.0 vs. LINQ in .NET 3.5
      4. LINQ to SQL am Beispiel – Die ersten Schritte
      5. Protokollieren der generierten T-SQL-Befehle
      6. Verzögerte Abfrageausführung und kaskadierte Abfragen
      7. Eager- und Lazy-Loading – Steuern der Ladestrategien bei 1:n-Relationen
      8. Trennen des Abfrageergebnisses vom Kontext
      9. Daten verändern, speichern, einfügen und löschen
        1. Datenänderungen mit SubmitChanges an die Datenbank übermitteln
        2. Einfügen von Datensätzen mit InsertOnSubmit
          1. Datensätze in Tabellen mit Foreign Key-Relations einfügen
        3. Daten löschen mit DeleteOnSubmit
      10. Transaktionen
        1. TransactionScope (Transaktionsgültigkeitsbereich)
        2. Verwenden der Transaktionssteuerung des DataContext
    7. 28. LINQ to Entities – Programmieren mit dem Entity Framework
      1. Voraussetzungen für das Verstehen dieses Kapitels
        1. Technische Voraussetzungen
        2. Prinzipielle Funktionsweise eines Entity Data Model (EDM)
      2. LINQ to Entities – ein erstes Praxisbeispiel
        1. Nachträgliches Ändern des Entitätscontainernamens
      3. Abfrage von Daten eines Entitätsmodells
        1. Abfrage von Daten mit LINQ to Entities-Abfragen
        2. Wie Abfragen zum Datenprovider gelangen – Entity SQL (eSQL)
        3. Anpassen des Namens der Entitätenmenge
        4. Generierte SQL-Anweisungen unter die Lupe nehmen
        5. Lazy- und Eager-Loading in Entity Framework
          1. Daten beim Lazy-Loading manuell nachladen
          2. Eager-Loading für bestimmte Relationen verwenden
        6. Anonymisierungsvermeidung bei Abfragen in verknüpften Tabellen
        7. Kompilierte Abfragen
      4. Daten verändern, speichern, einfügen und löschen
        1. Datenänderungen mit SaveChanges an die Datenbank übermitteln
        2. Einfügen von verknüpften Daten in Datentabellen
        3. Daten aus Tabellen löschen
      5. Ausblick
    8. 29. Mit SQL Server Compact Edition entwickeln
      1. SQL Server Compact in der Übersicht
        1. Merkmale mobiler SQL Server-Datenbanken
        2. Datenaustausch mit einem SQL Server
        3. Die Arbeitsumgebung
      2. Mit mobilen SQL Server-Datenbanken arbeiten
        1. Szenario: Artikeldaten mobil erfassen
        2. SQL Server Compact Edition installieren
        3. Mobile Datenbanken mit dem Management Studio anlegen und verwalten
        4. Datenbanken und Tabellen einrichten
        5. Die Replikation einrichten
        6. Das IIS-System vorbereiten
        7. Ein Abonnement einrichten und testen
        8. Datenbanken warten
      3. Mobile SQL Server-Anwendungen entwickeln
        1. Ein Projekt einrichten
        2. Datenverbindungen, Verweise und Datenquellen konfigurieren
        3. DataGrid für die Anzeige von Artikeldaten einfügen
        4. Das DataGrid mit einer Combobox filtern
        5. Formular für die Datenbearbeitung hinzufügen
        6. ADO.NET mit SQL Server Compact verwenden
        7. Cursororientiertes Arbeiten mit SqlCeResultSet
        8. Daten mit SQL Server synchronisieren
          1. Daten über Merge-Replikation synchronisieren
          2. Daten über RDA synchronisieren
      4. Offline-Clients und das Sync Framework
        1. Ein paar Grundbegriffe
        2. Sync Framework versus Merge-Replikation und RDA
        3. Unidirektionale Synchronisation mit Visual Studio
        4. Synchronisation mit dem Designer einrichten
          1. Eine lokale Datenbank einrichten
          2. SQL Server Change Tracking
        5. Synchronisation selbst programmieren
          1. Die Server-Datenbank und Tabelle vorbereiten
          2. Die Client-Tabelle vorbereiten
          3. Die Anfangssynchronisation implementieren
          4. Daten bidirektional synchronisieren
          5. Synchronisationsstatistiken anzeigen
          6. Synchronisationskonflikte behandeln
          7. Daten partitionieren
          8. Daten über einen Service synchronisieren
  6. IV. Datenbankobjekte mit .NET entwicklen
    1. 30. Mit der SQLCLR arbeiten
      1. .NET Inside: Die Common Language Runtime im SQL Server
        1. Einsatzmöglichkeiten für verwalteten Code in einer Datenbank
        2. Wann SQLCLR einsetzen?
          1. Einsatzmöglichkeiten für die SQLCLR
          2. Gründe, die gegen den Einsatz der SQLCLR sprechen
        3. Die Rolle der Common Language Runtime
        4. Der SQL Server als Laufzeithost
      2. Grundlagen der SQLCLR-Entwicklung
        1. Die SQLCLR-Laufzeitumgebung aktivieren
        2. Eine SQLCLR-Assembly erstellen
        3. Eine SQLCLR-Assembly importieren und T-SQL-Objekte deklarieren
        4. Assemblys und SQLCLR-Objekte im Objekt-Explorer
        5. Assemblys und SQLCLR-Objekte in den Metadaten
        6. Aktualisieren von Assemblys
        7. Einschränkungen
      3. SQLCLR-Objekte mit Visual Studio entwickeln
        1. Ein SQLCLR-Datenbankprojekt anlegen
        2. Eine gespeicherte Prozedur für die SQLCLR schreiben
        3. Attribute
        4. Ein Testskript vorbereiten
        5. SQLCLR-Code debuggen
        6. Projekteigenschaften einstellen
      4. Ausliefern von SQLCLR-Objekten
      5. Sicherheit
        1. T-SQL-Sicherheit für die SQLCLR-Objekte
        2. SQLCLR-Sicherheit
          1. Berechtigungssätze
          2. Die Berechtigungsebene einstellen
          3. Mit einer signierten Assembly arbeiten
      6. SQLCLR-Datentypen
    2. 31. Datenbankobjekte mit der SQLCLR entwickeln
      1. Klassen für das Arbeiten mit der SQLCLR
        1. Informationen mit der SqlPipe an den Aufrufer senden
        2. Auf die Umgebung mittels SqlContext zugreifen
        3. Impersonalisierung mit SqlContext
        4. Serverseitiger Datenzugriff
          1. Eine Verbindung zur Datenbank mit SqlConnection herstellen
          2. Daten mit SqlCommand und SqlDatareader abholen
          3. Transaktionen
        5. Ausnahmen
      2. Gespeicherte Prozeduren
        1. Eine gespeicherte Prozedur anlegen
        2. Das Attribut SqlProcedure
        3. Parameter
        4. Rückgabewert
        5. Beispiele
          1. Einen Webservice in einer Prozedur verwenden
          2. Eine Datei schreiben
          3. Dynamisch pivotieren
      3. Trigger
        1. Das Attribut SqlTrigger
        2. Die Klasse SqlTriggerContext
        3. SQLCLR-Trigger zur Überwachung von Geschäftsregeln
        4. DDL-Trigger zur Überwachung von Strukturänderungen
      4. Skalare Funktionen
        1. Das Attribut SqlFunction
        2. T-SQL oder SQLCLR – was ist schneller?
        3. Beispiele
          1. E-Mail-Adressen überprüfen
          2. Vergleiche mit regulären Ausdrücken
      5. Tabellenwertige Funktionen
        1. Das Attribut SqlFunction in tabellenwertigen Funktionen
        2. Implementierung
          1. Implementierung mit Pufferung der Ergebnisse
          2. Implementierung als Streaming-Funktion
        3. Beispiele
          1. Windows-Protokolldaten in eine Tabelle verwandeln
          2. Eine kommabegrenzte Datei als Tabelle ausgeben
      6. Benutzerdefinierte Aggregate
        1. Das Attribut SqlUserDefinedAggregate
        2. Implementierung
          1. Standardmethoden
          2. Benutzerdefinierte Serialisierung
        3. Ausliefern eines benutzerdefinierten Aggregats
        4. Beispiele
          1. Ein Aggregat für ein gewichtetes Mittel
          2. Ein Aggregat das Worte zählt
      7. Benutzerdefinierte Datentypen
        1. Das Attribut SqlUserDefinedType
        2. Implementierung eines benutzerdefinierten Datentyps
        3. Aktualisieren eines bereitgestellten UDTs
        4. Benutzerdefinierte Methoden und Eigenschaften
        5. Benutzerdefinierte Serialisierung
        6. Validieren der Parameter und Werte
      8. Tipps für SQLCLR-Typen in der Clientprogrammierung
        1. UDTs in einem DataReader
        2. UDTs disconnected verwenden
        3. UDTs in Parametern
      9. Performance
        1. Monitoring von SQLCLR-Objekten
        2. Indizierung von UDTs
    3. 32. SQL Server mit .NET verwalten
      1. Grundlagen der Server Management Objects
        1. Feststellen, welche SQL Server es gibt
        2. Eine Verbindung mit einer SQL Server-Instanz herstellen
        3. Das SMO-Objektmodell
      2. SMO-Programmierverfahren
        1. Instanziieren und Zerstören von SMO-Objekten
        2. Capture-Modus
        3. Scripting
        4. Transaktionen in SMO
        5. Ausnahmebehandlung
        6. SMO und WMI
      3. Praktische Beispiele
        1. Eine neue Datenbank einrichten
        2. Belegten und freien Speicherplatz anzeigen
        3. Server- und Datenbankbenutzer anlegen
        4. Eine vollständige Datenbanksicherung durchführen
        5. Eine vorhandene Tabelle ändern
        6. Datenbankobjekte in andere Datenbanken kopieren
        7. Eine Assembly installieren und eine Funktion einrichten
        8. Einen Wartungsjob einrichten
        9. Globale Suche nach Objektnamen
        10. Ein Skript für alle Tabellen und Beziehungen generieren
  7. V. Beyond relational
    1. 33. Streaming-Daten mit FILESTREAM verarbeiten
      1. Grundlagen
        1. Speicheroptionen für große Dateien (BLOBs)
        2. Das FILESTREAM-Konzept
        3. Kompatibilität mit anderen SQL Server-Features
        4. Wann FILESTREAM einsetzen?
      2. FILESTREAM-Speicherung aktivieren
        1. Das FILESTREAM-Feature aktivieren
          1. FILESTREAM im SQL Server Windows-Dienst aktivieren
          2. FILESTREAM in einer SQL Server-Instanz aktivieren
      3. Mit FILESTREAM in T-SQL arbeiten
        1. Das Beispielszenario
        2. Filestream-Speicherung in einer Datenbank vorbereiten
        3. Filestream-Daten in einer Tabelle verwenden
        4. Daten mit T-SQL bearbeiten
          1. FILESTREAM – Garbage Collection und Logging
          2. Transaktionen mit FILESTREAM-Daten
          3. Konsistenz von FILESTREAM-Daten testen
      4. Filestream-Daten in Clients verwenden
      5. FILESTREAM-Tipps
    2. 34. Geoinformationen mit geography und geometry verarbeiten
      1. Geodaten und der SQL Server
        1. Einsatzgebiete
        2. Standards für Geodaten in der Datenbank
        3. Die Erde ist rund – oder nicht? Referenzsysteme
      2. Geodaten in SQL Server-Datenbanken verwenden
        1. Die Datentypen geometry und geography
        2. Geodaten in Tabellen verwalten
          1. Geodaten einfügen
          2. Tabelleneinschränkungen für Geodaten
          3. Formate für Geodaten
          4. Geodaten abfragen
          5. Geodaten im Management Studio darstellen
      3. geometry und geography im Detail
        1. Einschränkungen und Randbedingungen
          1. Speicherplatz
          2. Validität
          3. Beschränkung auf eine Hemisphäre
        2. Methoden für Geodatentypen
          1. Elementare Auskunftsfunktionen
          2. Eigenschaften von Punkten
          3. Räumliche Beziehungen auswerten
          4. Metriken
          5. Mengenoperationen
          6. Dekonstruktion
          7. Geometrien verändern
          8. Validität prüfen oder herstellen
      4. Indizes für Geodaten
      5. Daten geocodieren
      6. Geodaten visualisieren
        1. Geodaten in den Reporting Services
        2. Geodaten in Anwendungen
    3. 35. Hierarchische Daten mit hierarchyid verarbeiten
      1. (T-)SQL und hierarchische Daten
        1. Alternativen zu hierarchyid
          1. Parent/Child-Relationen
          2. Materialisierter Pfad
          3. Nested Sets
      2. Mit hierarchischen Daten arbeiten
        1. Der Datentyp hierarchyid
        2. Szenario
        3. Hierachische Spalten anlegen
        4. Werte einfügen
          1. Eine neue Wurzel mit GetRoot einfügen
          2. Nachfolgerknoten mit GetDescendants anlegen
          3. Einen Knoten zwischen vorhandenen einfügen
          4. Eine Hilfsprozedur für das Anlegen neuer Knoten
          5. Nachfolgerknoten mit Parse anlegen
        5. In Hierarchyid-Daten navigieren
          1. Die Ebene eines Knotens mit GetLevel bestimmen
          2. Die Nachfolger eines Knotens herausfinden mit IsDescendant
          3. Vorgänger eines Knotens finden: GetAncestor
          4. Die Wurzel von Bäumen finden
        6. Die Strukturen einer Hierarchie verändern
          1. Einen Knoten mit einem neuen Vorgänger versehen: GetReparentedValue
          2. Einen Teilbaum umhängen
          3. Die Position eines Knotens in einer Ebene verändern
        7. Hierarchische Spalten indizieren
    4. 36. Von XML nach T-SQL und zurück
      1. Die OPENXML-Methode
        1. Zusammenfassung
      2. Die FOR XML-Klausel
        1. Einführung
        2. Die XML RAW-Option
        3. Die XML AUTO-Option
        4. Die XML EXPLICIT-Option
        5. Neue FOR XML-Features
        6. TYPE-Direktive
        7. PATH-Direktive
        8. Namensräume
        9. Rekursive XML-Dokumente
        10. XSINIL-Direktive
        11. Zusammenfassung
    5. 37. Der xml-Datentyp
      1. Der xml-Datentyp
        1. Einschränkungen und Standardwerte
        2. Verwendung von Triggern und berechneten Spalten
        3. Typisierte xml-Spalten
        4. Umwandeln bestehender varchar()- oder text-Spalten in xml-Spalten
      2. Abfragen aus xml-Datentypen
        1. Grundsätzliches zur Verwendung von Namensräumen
        2. query-Methode
        3. value-Methode
        4. exist-Methode
        5. modify-Methode
          1. insert
          2. delete
          3. replace value of
        6. nodes-Methode
        7. Zusammenfassung
      3. XML-Indizierung
        1. Primärer Index
        2. Sekundärer XML Path-Index
        3. Sekundärer XML Value-Index
        4. Sekundärer XML Property-Index
        5. Erstellung und Pflege von XML-Indizes
      4. Zusammenfassung
    6. 38. Asynchrone Verarbeitung mit dem Service Broker
      1. Grundlagen
      2. Konversation
        1. Nachrichten
        2. Dialoge
        3. Konversationsgruppen
      3. Datenbankobjekte
        1. Nachrichtentypen
        2. Verträge
        3. Warteschlangen
        4. Dienste
        5. Senden und Empfangen von Nachrichten
      4. Sicherheit
        1. Remotedienstbindungen
        2. Routen
          1. remote_service_name
          2. broker_instance
          3. address
          4. mirror_address
        3. Endpunkte
      5. Beispielanwendung
        1. Datenbankobjekte
    7. 39. Complex Event Processing mit StreamInside
      1. Installationsvoraussetzungen
      2. Programmiermodelle
        1. Implicit Server
        2. Explicit Server
        3. IObservable/IObserver
      3. Beispiel
      4. Ereignisse
        1. Point
        2. Interval
        3. Edge
        4. CTI
      5. Adapter
        1. Enqueuing
        2. Adapter-Factory
      6. Datenströme
      7. Abfragen
        1. Templates
        2. Bindungen
      8. Deployment
        1. Gehostete DLL
        2. Stand-alone Server
        3. Andere Szenarien
      9. Monitoring
        1. PowerShell
        2. Event Flow Debugger
      10. Zusammenfassung
  8. A. Über die Autoren
    1. Georg Urban
    2. Jörg Neumann
    3. Klaus Löffelmann
    4. Alexander Köller
  9. Stichwortverzeichnis