{ Was ist neu für Entwickler? } Jens K. Süßmeyer, Daniel Walzenbach DB Consultant, Developer Evangelist Microsoft Deutschland GmbH Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies FileStream BLOBs in DB + Dateisystem speichern Anwendung BLOB VARBINARY(MAX) Unstrukturierte Daten werden direkt in NTFS Dateisystem gespeichert Zwei Programmiermodelle T-SQL (genau wie SQL BLOB) Win32 Streaming APIs mit T-SQL transaktionaler Semantik Transaktionales Verhalten Bessere Handbarkeit DB Backup/restore SQL Server Sicherheit Dateigröße nur durch das Dateisystem limitiert { Unstrukturierte Daten } Der FileStream Datentyp Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies Date Time(n) DateTimeOffset(n) DateTime2(n) Date Enthält nur den Datumswert Feste Größe von 3 byte Spanne: 01.01.0001 – 31.12.9999 Bsp: 31-08-2007, 2007-08-31 Time(n) Enthält nur den Zeitwert Variable Größe von 3-5 byte (je nach konfigurierter Genauigkeit) Genauigkeit bis zu 100 Nanosekunden möglich) Bsp: 08:17:36.22332 DateTimeOffset(n) Datum und Uhrzeit inklusive der Zeitzonenverschiebung Variable Größe von 8-10 byte (je nach konfigurierter Genauigkeit, bis zu 100 Nanosekunden möglich) Bsp: 2007-08-31 08:17:36.22332 01:00 DateTime2(n) Kombination aus dem neuen Date und Time Datentyp mit erweiterter Spanne und Präzision Variable Größe von 6-8 byte (je nach gewünschter Genauigkeit) Genauigkeit bis zu 100 Nanosekunden möglich) Spanne von 01.01.0001 – 31.12.9999 Bsp: 31-08-2007 08:17:36.22332 Visual Studio 2008 Erweiterung des SqlDbType Enum und der Clientbibliotheken SQL Server Type date time datetimeoffset datetime2 .NET Type System.DateTime System.TimeSpan System.DateTimeOffset System.DateTime Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies HierarchyID Datentyp Perfekter Einsatz für Unternehmensorganisation, Stücklisten, etc… Repräsentiert eine Position in einer Hierarchie Kompakte/effiziente Speicherung Beliebige Datensätze speichern/löschen Leistungsfähige Abfragen GetRoot, GetLevel, IsDescendant, ReParent, etc. Parent ID <- ChildID Einfach Daten einzupflegen aber… Aufwändig in der Abfrage Rekursion Neuer „Built-In“ Datentyp – HierarchyID SQLCLR basierte System UDT Kann auch in .NET (VB.NET, C#) verwendet werden (SqlHierarchyId) Als path enumeration model implementiert (ORDPATH) HierarchyID (SQLCLR Typ) kann erweitert werden Von dem Typ ableiten Um Methoden und Properties erweitern Da HierarchyID ein SQLCLR Typ ist Kann von dem Typ abgeleitet werden Erweitern um Methoden und Properties Depth-first Knoten in einem Unterbaum sind benachbart angeordnet Effizient für Fragen nach Unterbäumen „Suche nach allen Dateien in diesem und den untergeordneten Ordnern“ CREATE UNIQUE INDEX Org_Depth_First ON Organization(EmployeeID) Breadth-first Knoten in einer Ebene sind benachbart angeordnet Effizient für Fragen nach direkt unterstellten Knoten „Suche nach allen Angestellten eines Managers“ CREATE CLUSTERED INDEX Org_Breadth_First ON Organization(OrgLevel,EmployeeID) { Hierarchische Daten } Hierarchische Struktur anlegen verwalten Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies Ausgangslage Für einen Abgleich müssen drei separate statements erzeugt werden (INSERT/UPDATE/DELETE) und nacheinander ausgeführt werden Eine explizite Transaktion muss über alle DML Operationen separat gepflegt werden um bei Fehlern das Rollback zu ermöglichen Anwendungsgebiete Bietet die Möglichkeit für die gleichzeitige Verwendung von DML Operationen (INSERT / UPDATE / DELETE) in einer Anweisung Bietet die Möglichkeit Änderungen in einem Batch durch den Client übertragen zu lassen und die Logik serverseitig auszuführen Befüllungen eines DataWareHouse BatchUpdate von Clients Synchronisieren von Datenquellen Syntax [ WITH <common_table_expression> [,...n] ] MERGE [ TOP ( expression ) [ PERCENT ] ] [ INTO ] target_table [ [ AS ] table_alias ] [ WITH ( <merge_hint> ) ] USING <table_source> (… 58 lines of syntax following…) Aktionen WHEN MATCHED (INNER JOIN) Ermöglicht Operationen wenn Datensätze sowohl in der Quelle als auch im Ziel vorhanden sind WHEN [TARGET] NOT MATCHED (LEFT OUTER JOIN) Ermöglicht Operationen wenn Datensätze in der Quelle aber nicht im Ziel existieren Aktionen WHEN SOURCE NOT MATCHED (RIGHT OUTER JOIN) Ermöglicht Operationen wenn Datensätze im Ziel aber nicht in der Quelle existieren Vorteile MERGE ist transaktional und benötigt keine explizite Transaktion für die beinhaltetenden DML Operationen MERGE löst Trigger nur einmal pro Aktion aus (BTW: Triggers are fired per statement NOT per row! ) $action ermöglicht es die ausgeführte Aktion (INSERT / UPDATE / DELETE) des Datensatzes zu erkennen Vorteile UPDATE Nicht-deterministisch: Mehrere gefundene (durch ON clause) Datensätze in der Quelltabelle MERGE Deterministisch: Join (ON clause) erwartet einen eindeutigen Datensatz in der Quelle { Merge } Die Verwendung von Merge Statements Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies Komplett neue Volltextsuche Architektur Volltextsuche als Feature der Datenbank Volltextkataloge sind in DB inregriert Umfassend Konfiguration von „Noise Words“ „Noise Word“ Konfiguration bleibt bei Backup/Restore und Detach/Attach intakt Suchergebnisse visualisieren Verbesserte Suchergebnisse Query und Indexing Performance deutlich gesteigert { Integrierte Volltextsuche } Volltextindex anlegen, abfragen, mit SQL Server 2005 vergleichen Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies Ausgangslage Batch Updates benötigten bisher mehrere Roundtrips zum Server um einen Abgleich zu machen Senden von strukturierten Daten war bisher nicht möglich, außer diese auf dem Server wieder zu zerlegen (TextArrays, XML, Binärdaten) Untypisierte Daten führten oftmals zu serverseitigen Fehlern Ausgangslage Grundlage sind benutzerdefinierte Tabellentypen Erweiterung der benutzterdefinierten Typen, der Typ wird in sys.table_types persistiert Erweiterung der bestehenden “Create Type” Syntax CREATE TYPE myTableType AS TABLE (id INT, name NVARCHAR(100),qty INT); DECLARE @MyVar myTableType Anwendung Table-valued parameters Verwendung von benutzerdefinierte Tabellentypen für die temporäre Speicherung von und den lesenden Zugriff auf die Daten (READONLY) Vereint Vorteile von Tabellenvariablen und temporären Tabellen Anwendung Ermöglicht die Übergabe als SqlParameter von Instanzen der Typen DataTable DbDataReader System.Collections.Generic.IList<SqlDataRecord> Unterstützung der client stacks OLEDB/ODBC/ADO.NET Erweiterung der .NET (3.x) Client durch den neuen SqlDbType „Structured“ Vorteile Ermöglicht große Mengen an Daten vom Client an den Server effizient (zur weiteren Verarbeitung) zu übertragen Bietet die Möglichkeit Parameter / Datensätze an Routinen in einer Variable zu übergeben (vs. XML, BLOB, CSV und andere Möglichkeiten die zusätzliche Verarbeitungen benötigen) Verringert bei großen Datenmengen die Anzahl der erzeugten Roundtrips erheblich { Table-valued parameters} Mit Table-valued parameters arbeiten Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies Geodaten sind vielfältig einsetzbar Planare (ebene Welt) und geodätische (runde Welt) Algorithmen Visualisierung von Geodaten mit dem Virtual Earth SDK Austausch von Geodaten über GML XML Integration von Geodaten in .NET Anwendungen Verbesserte Performance durch „Spatial Indexes“ 47.6456, -122.12551 Geography Datentyp Geodätisches Modell („Runde Erde“) Beschreibt Punkte, Linien und Gebiete durch Längen- und Breitengrade Berechnet Erdkrümmung und berücksichtigt korrekte „Großkreis“-Entfernungen Geometry Datentyp Ebenes Modell („Flache Erde“) Beschreibt Punkte, Linien und Gebiete durch X/Y Koordinaten Einsetzbar für kleine Gebiete und nichtprojezierte Oberflächen wie Innenräume, etc. Methoden des Geometry Datentyps OGC Methoden (43) Erweiterte Methoden (10) OGC Statische Methoden (16) Erweiterte Statische Methoden (4) { JobScout24 } Sven Schneider Teamleiter Softwareentwicklung JobScout24 { Geodaten } Übersicht Geodaten Mit Geodaten arbeiten Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies C# Unterstüzung für SSIS-Tasks Large UDTs Die Größe von 8k wurde gebrochen, neue mögliche Größe der UDTs ist 2GB Intellisense in SQL Server Management Studio Row constructors SELECT * FROM (VALUES (10002,1,12,1,12), (10002,1,12,1,12), (10003,1,12,1,12) ) AS SomeOrders(OrderId, ProductId, UnitPrice, Quantity, Discount) Row constructors Insert Into [Order Details] VALUES (10001,1,12,1,12) , (10002,1,12,1,12) , (10003,1,12,1,12) INSERT over DML Erweiterung zu OUPUT INTO Anweisung Ermöglicht die Speicherung und Verarbeitung der DML relevanten Informationen (INSERTED /DELETED / INSERT INTO OrdersThatChanged $Actions) (OrderId,PosId) SELECT OrderId,PosId FROM ( Update [Order Details] Update [Order Details] Update [Order Details] SET Discount = 0 SET Discount= 0= 0 SET Discount OUTPUT DELETED.OrderId, DELETED.PosId OUTPUT DELETED.OrderId, DELETED.PosId INTO OrdersThatChanged WHERE WHEREPrice Price <<1010 WHERE Price < 10 ) ChangedOrders (OrderId, PosId) WHERE ProductId > 1000 Variableninititalisierungen DECLARE @MyInt INT = 0 Zuweisungsoperatoren +=, -=, *=, /=, &=,|=,%=,^= UPDATE [Order Details] SET Discount *= 1.1 FROM [Order Details] OD INNER JOIN Orders OD ON O.OrderId = OD.OrderId WHERE OrderId = 10001 Variableninititalisierungen DECLARE @MyInt INT = 0 Zuweisungsoperatoren +=, -=, *=, /=, &=,|=,%=,^= UPDATE [Order Details] SET Discount *= 1.1 FROM [Order Details] OD INNER JOIN Orders OD ON O.OrderId = OD.OrderId WHERE OrderId = 10001 Intellisense :-) SQL Server 2008 ermöglicht ein effektiveres Arbeiten mit Daten Geo- und unstrukturierte Daten T-SQL Verbesserungen Neue Datentypen Synchronisierungen von Daten ADO.NET Entity Framework … Learn more about data programmability http://www.microsoft.com/sql/2008/technologies/dataprogrammability.mspx Learn more about spatial data http://www.microsoft.com/sql/2008/technologies/spatial.mspx Learn more about SQL Server 2008 http://www.microsoft.com/sql/2008/default.mspx Discover SQL Server 2008: Webcasts, Virtual Labs, and White Papers http://www.microsoft.com/sql/2008/learning/default.mspx SQL Server 2008 training http://www.microsoft.com/learning/sql/2008/default.mspx Download latest SQL Server CTP http://www.microsoft.com/sql/2008/prodinfo/download.mspx Join the SQL PASS community http://www.sqlpass.org weitere Angebote Visual Studio Team System Information Day Regelmäßige ganztägige Informationsveranstaltung von Microsoft Praxisnahe Demos & viel Raum für Diskussionen Details & Anmeldung: www.event-team.com/events/visualstudio TeamConf 2008 – Die Visual Studio Team System Konferenz VSTS in der Praxis - 22.-24. April 2008 in München Anwenderberichte (Siemens, ABB, Commerzbank, Datev, Münchener Rück,..) Fach- und Technologievorträge Vortragsprogramm und Anmeldung: www.teamconf.de Visual Studio Launch Promotion Tauschen Sie Ihre Visual Studio Standard in eine höherwertige Visual Studio Edition Ihrer Wahl Anrechnung in Höhe von 299 € beim Kauf eines anderen VS Produktes vom 19. Februar bis zum 30. April 2008 Nur bei den Partnern: PC Ware, SoftExpress, SOS und Zoschke (befinden sich alle in der Ausstellerhalle) Wir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung. © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.