SQL Server 2008 { Was ist neu für Entwickler? } 3/30/2017 10:18 PM SQL Server 2008 { Was ist neu für Entwickler? } Jens K. Süßmeyer, Daniel Walzenbach DB Consultant, Developer Evangelist Microsoft Deutschland GmbH © 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.
Überblick Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies
Unstrukturierte Daten FileStream 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 Backup/restore SQL Server Sicherheit Dateigröße nur durch das Dateisystem limitiert BLOBs in DB + Datei-system speichern Anwendung BLOB DB
{ Unstrukturierte Daten } demo Der FileStream Datentyp
Überblick Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies
Neue Zeiten sind angebrochen DateTimeOffset(n) DateTime2(n) Date Time(n)
Neue Zeiten sind angebrochen 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
Neue Zeiten sind angebrochen 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
Neue Zeiten sind angebrochen 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
Neue Zeiten sind angebrochen 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
Neue Zeiten sind angebrochen Visual Studio 2008 Erweiterung des SqlDbType Enum und der Clientbibliotheken SQL Server Type .NET Type date System.DateTime time System.TimeSpan datetimeoffset System.DateTimeOffset datetime2
Überblick Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies
T-SQL Verbesserungen 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.
Hierarchische Daten in SQL 2005 Parent ID <- ChildID Einfach Daten einzupflegen aber… Aufwändig in der Abfrage Rekursion
Hierarchische Daten in SQL 2008 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
HierarchyID erweitern Da HierarchyID ein SQLCLR Typ ist Kann von dem Typ abgeleitet werden Erweitern um Methoden und Properties
HierarchyID Indexstrategien Depth-first 3/30/2017 10:18 PM HierarchyID Indexstrategien 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) © 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.
HierarchyID Indexstrategien Breadth-first 3/30/2017 10:18 PM HierarchyID Indexstrategien 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) © 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.
{ Hierarchische Daten } demo Hierarchische Struktur anlegen verwalten
Überblick Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies
Merge statement 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
Merge statement 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
Merge statement 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…)
Merge statement 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
Merge statement Aktionen WHEN SOURCE NOT MATCHED (RIGHT OUTER JOIN) Ermöglicht Operationen wenn Datensätze im Ziel aber nicht in der Quelle existieren
Merge statement 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
Merge statement 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 } demo Die Verwendung von Merge Statements
Überblick Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies
Integrierte Volltextsuche 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 } demo Volltextindex anlegen, abfragen, mit SQL Server 2005 vergleichen
Überblick Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies
Table-valued parameter 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
Table-valued parameter 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
Table-valued parameter 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
Table-valued parameter 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“
Table-valued parameter 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} demo Mit Table-valued parameters arbeiten
Überblick Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies
Geodaten 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
Geodaten 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
Geodaten 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.
Geodaten Methoden des Geometry Datentyps OGC Methoden (43) Erweiterte Methoden (10) OGC Statische Methoden (16) Erweiterte Statische Methoden (4)
Sven Schneider Teamleiter Softwareentwicklung JobScout24 3/30/2017 10:18 PM { JobScout24 } Partner Sven Schneider Teamleiter Softwareentwicklung JobScout24 © 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.
{ Geodaten } demo Übersicht Geodaten Mit Geodaten arbeiten
Überblick Mit unstrukturierten Daten arbeiten Neue Zeiten sind angebrochen Hierarchische Daten MERGE Integrierte Volltextsuche Table Value parameters, Table row constructor Geodaten Goodies
Die kleinen Dinge im Leben… 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
Die Kleinen Dinge im Leben… Row constructors SELECT * FROM (VALUES (10002,1,12,1,12), (10003,1,12,1,12) ) AS SomeOrders(OrderId, ProductId, UnitPrice, Quantity, Discount)
Die kleinen Dinge im Leben… Row constructors Insert Into [Order Details] VALUES (10001,1,12,1,12) , (10002,1,12,1,12) , (10003,1,12,1,12)
Die kleinen Dinge im Leben… INSERT over DML Erweiterung zu OUPUT INTO Anweisung Ermöglicht die Speicherung und Verarbeitung der DML relevanten Informationen (INSERTED /DELETED / $Actions) INSERT INTO OrdersThatChanged (OrderId,PosId) SELECT OrderId,PosId FROM ( Update [Order Details] SET Discount = 0 OUTPUT DELETED.OrderId, DELETED.PosId WHERE Price < 10 ) ChangedOrders (OrderId, PosId) WHERE ProductId > 1000 Update [Order Details] SET Discount = 0 WHERE Price < 10 Update [Order Details] SET Discount = 0 OUTPUT DELETED.OrderId, DELETED.PosId INTO OrdersThatChanged WHERE Price < 10
Die kleinen Dinge im Leben… 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
Die kleinen Dinge im Leben… Variableninititalisierungen Zuweisungsoperatoren +=, -=, *=, /=, &=,|=,%=,^= DECLARE @MyInt INT = 0 UPDATE [Order Details] SET Discount *= 1.1 FROM [Order Details] OD INNER JOIN Orders OD ON O.OrderId = OD.OrderId WHERE OrderId = 10001
Die kleinen Dinge im Leben… Intellisense :-)
Zusammenfassung 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 …
Resources 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
Visual Studio 2008 weitere Angebote 3/30/2017 10:18 PM Visual Studio 2008 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) © 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.
Ask the Experts Wir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.
3/30/2017 10:18 PM © 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. © 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.