Click here to load reader

Datenbankprogrammierung mit .NET 4 - beck-shop.de · PDF fileDatenbankprogrammierung mit .NET 4.0 Mit Visual Studio 2010 und SQL Server 2008 R2 von Dr. Holger Schwichtenberg, Thorsten

  • View
    220

  • Download
    5

Embed Size (px)

Text of Datenbankprogrammierung mit .NET 4 - beck-shop.de · PDF fileDatenbankprogrammierung mit .NET...

  • Datenbankprogrammierung mit .NET 4.0

    Mit Visual Studio 2010 und SQL Server 2008 R2

    vonDr. Holger Schwichtenberg, Thorsten Kansy

    1. Auflage

    Hanser Mnchen 2010

    Verlag C.H. Beck im Internet:www.beck.de

    ISBN 978 3 446 42120 2

    Zu Inhaltsverzeichnis

    schnell und portofrei erhltlich bei beck-shop.de DIE FACHBUCHHANDLUNG

    http://www.beck-shop.de/Kansy-Datenbankprogrammierung-NET-4-0/productview.aspx?product=800990&utm_source=pdf&utm_medium=clickthru_lp&utm_campaign=pdf_800990&campaign=pdf/800990http://www.beck-shop.de/fachbuch/inhaltsverzeichnis/9783446421202_TOC_001.pdf

  • Leseprobe

    Thorsten Kansy

    Datenbankprogrammierung mit .NET 4.0

    Herausgegeben von Dr. Holger Schwichtenberg

    ISBN: 978-3-446-42120-2

    Weitere Informationen oder Bestellungen unter

    http://www.hanser.de/978-3-446-42120-2

    sowie im Buchhandel.

    Carl Hanser Verlag, Mnchen

  • 2.1 SQL Server 2008

    7

    2.1.3 Vereinfachte Berechnung

    Ebenfalls klein, aber fein ist die aus C# bekannte Mglichkeit, Variablen vereinfacht um einen bestimmten Wert zu verndern. Passend zu den Variablen @Name und @ID von oben sieht dies so aus:

    SET @Name += ', Thorsten';

    SET @ID -= 100;

    Dies funktioniert auch mit allen anderen geeigneten Operatoren wie z.B. den Grundre-chenarten etc.

    2.1.4 FileStream-Storage

    Mit SQL Server 2008 erffnet sich die Mglichkeit, (binre) Daten getrennt von den restli-chen Daten der Tabelle in einem FileStream-Storage anzulegen. Die entsprechenden Inhal-te einer Spalte werden dann nicht in den Datenmedien der Datenbank abgelegt, sondern direkt im Dateisystem, das dafr zwingend mit NTFS1 formatiert worden sein muss. In der Tabelle befinden sich dann quasi nur noch Verweise. Somit knnen effizient sehr groe Datenmengen gespeichert werden. Der SQL Server legt diese BLOB-Daten selbststndig im NTFS-Dateisystem ab und sorgt gleichzeitig bei nderungen fr die notwendigen Un-tersttzungen bei Transaktionen, Sicherungen/Wiederherstellung und Replikationen. Unter 3.11, Filestream, finden Sie beschrieben, wie mit diesem neuen Feature gearbeitet wer-den kann.

    2.1.5 CDC (Change Data Capture)

    Mit CDC knnen auf einfache Weise nderungen am Inhalt und am Schema einer Tabelle berwacht und in eine Historientabelle geschrieben werden.

    Hinweis: Unter 2.1.6, Change Tracking, ist auf den ersten Blick ein recht hnliches Feature beschrie-ben. Zur Orientierung finden Sie dort auch eine Entscheidungshilfe, wann CDC und wann Change Tracking die bessere Wahl ist.

    Anders als bisherige Lsungen arbeitet CDC nicht mit Triggern, sondern als Auftrag des SQL Server-Agenten, der das Transaktionsprotokoll fr diesen Zweck nutzt. Der Vorteil liegt dabei auf der Hand: Neben der besseren Performance besteht nicht die Gefahr, dass ein Fehler beim Protokollieren beeintrchtigt, wie es bei Triggern der Fall war.

    1 NTFS: New Technology File System, das Standarddateisystem fr Windows XP, Windows Vista und Windows Server

  • 2 Neuerungen in SQL Server, Visual Studio und C#

    8

    Abbildung 2.2 Diese Abbildung zeigt die Funktionsweise von CDC.

    Hinweis: Details darber, wie CDC eingesetzt werden kann, finden Sie unter Abschnitt 3.7, CDC (Change Data Capture), der sich vollstndig dieser Technik widmet.

    2.1.6 Change Tracking

    Werden nderungen an Daten mittels Change Tracking verfolgt, so geschieht dies im Vergleich zu CDC nicht asynchron, sondern zeitgleich mit der nderungsanweisung (IN-SERT, DELETE, UPDATE und MERGE, nicht jedoch TRUNCATE TABLE). Das bedeutet, dass Change Tracking die Geschwindigkeit dieser Anweisungen abbremst, dafr die nderun-gen jedoch umgehend abgerufen werden knnen eine Verzgerung, die, wie bei CDC, abhngig von der Auslastung des Systems ist, muss nicht bercksichtigt werden. Change Tracking arbeitet mit Versionsnummern, die mit 0 beginnen und suggestiv erhht werden, wenn nderungen durchgefhrt werden. Diese Versionsnummern sind fr die ge-samte Datenbank gltig und stellen damit die Grundlage fr eine effiziente Datenreplikati-on dar, wie sie z.B. auch vom Microsoft Sync Framework realisiert wird, um zwei Daten-bestnde zu replizieren. Diese funktioniert in Krze so: Seite A hat eine Tabelle, von der Seite B wei, dass sie bis zur nderungsversion N auf dem aktuellstem Stand ist. Verbinden sich nun beide Systeme miteinander, kann Seite B abfragen, welche Versionsnummer gerade aus Seite A die aktu-elle ist. Ist dieser Wert gleich N, so wurde in der Zwischenzeit nichts verndert. Ist der Wert allerdings grer N, so kann Seite B fragen Gibt mir alle nderungen der Tabelle in Version N, den eigenen Datenbestand entsprechend auffrischen und schlielich N auf den neuen, hheren Wert aktualisieren. Spter wiederholt sich der Prozess, um dann die neuen

  • 2.1 SQL Server 2008

    9

    nderungen an den Daten erneut zu replizieren, usw. usw. Ist der Wert jedoch kleiner, so liegt ein Problem vor, und die beiden Seiten A & B mssen sich komplett neu initialisieren oftmals so, dass eine Seite alle Daten der anderen bernimmt. Was dieses System nicht hergibt, ist der genaue Zeitpunkt, wann eine nderung vorgenommen wurde. Informationen ber nderungen sind nur fr einen definierbaren Zeitraum verfgbar. Wird versucht, nach dessen Ablauf nderungen abzufragen, sind diese nicht mehr gltig oder lckenhaft. Wie Sie nach der Aktivierung weiter unten sehen werden, gibt es jedoch einen Mechanismus, der solche Flle erkennt und angemessen reagiert.

    Hinweis: Details darber, wie Change Tracking in der eigenen Anwendung eingesetzt werden kann, finden Sie unter Abschnitt 3.8, Change Tracking.

    CDC vs. CT Die Funktionalitten von CDC und CT erscheinen recht hnlich, wenn nicht sogar gleich. Doch es gibt Unterschiede, die wichtig fr die Entscheidungsfindung sind, wenn es darum geht, welche der beiden die richtige Wahl ist. Die folgende Tabelle stellt die unterschiedli-chen Merkmale gegenber.

    Tabelle 2.1 Gegenberstellung der Merkmale von CDC und CT

    Merkmal CDC CT

    Asynchrone Ausfhrung Ja Nein

    Zeitgleiche, synchrone Ausfhrung Nein Ja

    Bentigt SQL Server Agent Ja Nein

    Erfasst Nettodatennderungen Ja Ja

    Erfasst Bruttodatennderungen Ja Nein

    Tabellengenaue berwachung Ja Ja

    Spaltengenaue berwachung Ja Ja

    Art der nderung ist bekannt Ja Ja

    Genauer Zeitpunkt ist bekannt Ja Nein

    nderungskontext Nein Ja

    Erfasst nderungen am Aufbau von Tabellen Ja Nein

    Erfasst jegliche nderungen an und in der Datenbank, inklusive Leseoperation auf einer Tabelle, und hlt zudem fest, wer fr die nderung verantwortlich ist.

    Nein Nein

    Das letzte Merkmal der vorherigen Tabelle, nmlich das Erfassen von Leseoperationen in der Datenbank, ist weder mit CDC noch mit CT mglich. Fr Anwendungen oder Situati-onen, die solch eine Funktion bentigen, sei auf Auditing hingewiesen, das im nchsten Abschnitt beschrieben wird.

  • 2 Neuerungen in SQL Server, Visual Studio und C#

    10

    2.1.7 Auditing

    Mit Auditing lassen sich ab SQL Server 2008 alle Arten von Zugriffen auf Datenbanken aufzeichnen. Da es sich hierbei um ein Feature handelt, das zur vollstndigen, jedoch se-lektiven berwachung gedacht ist, kann ber eine Spezifikation festlegt werden, welche Aktion (z.B. DML-Anweisungen) von welchen Benutzern/Rollen dabei bercksichtigt wird. Auditing bedient sich der erweiterten Ereignisse (Extended Events), der neuen Ereignis-Infrastruktur, die mit SQL Server 2008 eingefhrt wurde. Der praktische Einsatz gliedert sich grob in die vier folgenden Schritte aus:

    Die Erstellung und das Aktivieren eines berwachungsobjekts auf Instanzebene, das alle Zugriffe zu einem Ziel sendet. Dies kann eine Datei, das Anwendungs- oder das Sicherheitsprotokoll des Betriebssystems sein. In den betreffenden Datenbanken kann eine berwachungsspezifikation anlegt werden, die festlegt, welche Aktionen von wem in dieser Datenbank aufgezeichnet werden sol-len. Aktivierung der berwachung Spter Auswertungen und Analyse der Zugriffe

    SQL Server Auditing ist ein Feature, das fr die berwachung und den Nachweis des Zugriffs auf sensible Dateien entwickelt wurde. Daher kann es vollstndig per Oberflche administriert und die Protokollierung auerhalb der Datenbank abgelegt werden damit ist z.B. verstrkt sichergestellt, dass der Zugriff auf diese empfindlichen Daten wirklich nur von einer auserlesenen Schar von Anwendern (Revision) mglich ist. Jedoch lassen sich die gewonnenen Informationen leicht per T-SQL abfragen, sodass auch ein Einsatz in der eigenen Anwendung keine groen Probleme bereitet.

    Hinweis: Eine kleine Einfhrung, wie Auditing aktiviert und verwendet werden kann, finden Sie in Kapitel 3 unter 3.9, Auditing.

    2.1.8 Die Merge-Anweisung

    Neu in der Familie der DML-Anweisungen ist die ANSI2-SQL-konforme MERGE-Anweis-ung, die INSERT-, DELETE- und Update-Anweisungen in sich vereint. So ist es z.B. mg-lich, mit nur einer Anweisung Zeilen in einer Tabelle entweder zu aktualisieren oder einzu-fgen, je nachdem, ob die Zeile schon vorher existierte. Dabei eignet sich diese Anweisung besonders in Data-Warehousing-Szenarien.

    2 ANSI: American National Standards Institute

  • 2.1 SQL Server 2008

    11

    Ohne die MERGE-Anweisung knnte eine solche Aufgabenstellung mit einer entsprechen-den Kombination aus INSERT-, DELETE- und UPDATE-Anweisungen erledigt werden. Diese haben aber klar den Nachteil, dass Daten mehrfach abgefragt werden mssen und, da es sich nicht um eine einzelne Anweisung handelt, Vorkehrungen fr eine Transaktion getrof-fen werden mssen ein Umstand, der sich gerade bei Abfragen, die auf mehrere Server verteilt wurden, als langsam und kompliziert erweist.

    -- Zuerst das Ziel festlegen (Tabelle oder Sicht) MERGE Ziel