Jens K. Süßmeyer, Daniel Walzenbach DB Consultant, Developer Evangelist Microsoft Deutschland...

Post on 06-Apr-2015

108 views 4 download

Transcript of Jens K. Süßmeyer, Daniel Walzenbach DB Consultant, Developer Evangelist Microsoft Deutschland...

SQL Server 2008{ Was ist neu für Entwickler? }Jens K. Süßmeyer, Daniel Walzenbach

DB Consultant, Developer EvangelistMicrosoft Deutschland GmbH

Überblick

Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies

Unstrukturierte DatenFileStream

VARBINARY(MAX)Unstrukturierte Daten werden direkt in NTFS Dateisystem gespeichertZwei Programmiermodelle

T-SQL (genau wie SQL BLOB)Win32 Streaming APIs mit T-SQL transaktionaler Semantik

Transaktionales VerhaltenBessere Handbarkeit

Backup/restoreSQL Server Sicherheit

Dateigröße nur durch das Dateisystem limitiert

BLOBs in DB + Datei-system

speichern

Anwendung

BLOB

DB

{ Unstrukturierte Daten }

demoDer FileStream Datentyp

Überblick

Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies

Neue Zeiten sind angebrochen

DateTimeOffset(n)

DateTime2(n)

Date

Time(n)

Neue Zeiten sind angebrochen Date

Enthält nur den DatumswertFeste Größe von 3 byteSpanne: 01.01.0001 – 31.12.9999Bsp: 31-08-2007, 2007-08-31

Neue Zeiten sind angebrochen Time(n)

Enthält nur den ZeitwertVariable 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 ZeitzonenverschiebungVariable 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äzisionVariable 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.9999Bsp: 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 Typedate System.DateTime time System.TimeSpan datetimeoffset System.DateTimeOffs

et datetime2 System.DateTime

Überblick

Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies

T-SQL VerbesserungenHierarchyID Datentyp

Perfekter Einsatz für Unternehmensorganisation, Stücklisten, etc…

Repräsentiert eine Position in einer HierarchieKompakte/effiziente SpeicherungBeliebige Datensätze speichern/löschenLeistungsfähige Abfragen

GetRoot, GetLevel, IsDescendant, ReParent, etc.

Hierarchische Daten in SQL 2005

Parent ID <- ChildIDEinfach Daten einzupflegen aber…Aufwändig in der Abfrage

Rekursion

Hierarchische Daten in SQL 2008

Neuer „Built-In“ Datentyp – HierarchyIDSQLCLR 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 ableitenUm Methoden und Properties erweitern

HierarchyID erweitern

Da HierarchyID ein SQLCLR Typ istKann von dem Typ abgeleitet werdenErweitern um Methoden und Properties

HierarchyID IndexstrategienDepth-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)

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)

{ Hierarchische Daten }

demo Hierarchische Struktur

anlegen verwalten

Überblick

Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies

Merge statementAusgangslage

Für einen Abgleich müssen drei separate statements erzeugt werden (INSERT/UPDATE/DELETE) und nacheinander ausgeführt werdenEine explizite Transaktion muss über alle DML Operationen separat gepflegt werden um bei Fehlern das Rollback zu ermöglichen

Merge statementAnwendungsgebiete

Bietet die Möglichkeit für die gleichzeitige Verwendung von DML Operationen (INSERT / UPDATE / DELETE) in einer AnweisungBietet die Möglichkeit Änderungen in einem Batch durch den Client übertragen zu lassen und die Logik serverseitig auszuführenBefüllungen eines DataWareHouseBatchUpdate von ClientsSynchronisieren 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 OperationenMERGE 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 }

demoDie Verwendung von Merge Statements

Überblick

Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies

Integrierte Volltextsuche

Komplett neue Volltextsuche Architektur

Volltextsuche als Feature der DatenbankVolltextkataloge sind in DB inregriertUmfassend Konfiguration von „Noise Words“

„Noise Word“ Konfiguration bleibt bei Backup/Restore und Detach/Attach intakt

Suchergebnisse visualisierenVerbesserte SuchergebnisseQuery und Indexing Performance deutlich gesteigert

{ Integrierte Volltextsuche }

demo Volltext Index anlegen, abfragen, mit SQL Serve 2005 vergleichen

Überblick

Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies

Table-valued parameterAusgangslage

Batch Updates benötigten bisher mehrere Roundtrips zum Server um einen Abgleich zu machenSenden 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 parameterAusgangslage

Grundlage sind benutzerdefinierte Tabellentypen

Erweiterung der benutzterdefinierten Typen, der Typ wird in sys.table_types persistiertErweiterung der bestehenden “Create Type” Syntax

CREATE TYPE myTableType AS TABLE (id INT, name NVARCHAR(100),qty INT);

DECLARE @MyVar myTableType

Table-valued parameterAnwendung

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 parameterAnwendung

Ermöglicht die Übergabe als SqlParameter von Instanzen der Typen

DataTableDbDataReaderSystem.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 parameterVorteile

Ermöglicht große Mengen an Daten vom Client an den Server effizient (zur weiteren Verarbeitung) zu übertragenBietet 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}

demoMit Table-valued parameters arbeiten

Überblick

Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies

Geodaten

Geodaten sind vielfältig einsetzbarPlanare (ebene Welt) und geodätische (runde Welt) AlgorithmenVisualisierung von Geodaten mit dem Virtual Earth SDKAustausch von Geodaten über GML XMLIntegration von Geodaten in .NET AnwendungenVerbesserte 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 BreitengradeBerechnet Erdkrümmung und berücksichtigt korrekte „Großkreis“-Entfernungen

Geodaten Geometry Datentyp

Ebenes Modell („Flache Erde“)Beschreibt Punkte, Linien und Gebiete durch X/Y KoordinatenEinsetzbar 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)

{ JobScout24 }

Sven SchneiderTeamleiter SoftwareentwicklungJobScout24

Partner

{ Geodaten }

demo Übersicht Geodaten Mit Geodaten arbeiten

Überblick

Mit unstrukturierten Daten arbeitenNeue Zeiten sind angebrochenHierarchische DatenMERGEIntegrierte VolltextsucheTable Value parameters, Table row constructorGeodatenGoodies

Die kleinen Dinge im Leben…

C# Unterstüzung für SSIS-Tasks

Large UDTsDie 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), (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 DMLErweiterung zu OUPUT INTO AnweisungErmöglicht die Speicherung und Verarbeitung der DML relevanten Informationen (INSERTED /DELETED / $Actions)

Update [Order Details]SET Discount = 0 WHERE Price < 10

Update [Order Details]SET Discount = 0OUTPUT DELETED.OrderId, DELETED.PosIdINTO OrdersThatChangedWHERE Price < 10

INSERT INTO OrdersThatChanged(OrderId,PosId)SELECT OrderId,PosId FROM(

Update [Order Details]SET Discount = 0OUTPUT DELETED.OrderId, DELETED.PosIdWHERE Price < 10

) ChangedOrders (OrderId, PosId)WHERE ProductId > 1000

Die kleinen Dinge im Leben…

Zuweisungsoperatoren+=, -=, *=, /=, &=,|=,%=,^=

UPDATE [Order Details]SET Discount *= 1.1FROM [Order Details] ODINNER JOIN Orders ODON O.OrderId = OD.OrderIdWHERE OrderId = 10001

Variableninititalisierungen

DECLARE @MyInt INT = 0

Die kleinen Dinge im Leben…

Variableninititalisierungen

Zuweisungsoperatoren+=, -=, *=, /=, &=,|=,%=,^=

UPDATE [Order Details]SET Discount *= 1.1FROM [Order Details] ODINNER JOIN Orders ODON O.OrderId = OD.OrderIdWHERE OrderId = 10001

DECLARE @MyInt INT = 0

Die kleinen Dinge im Leben…

Intellisense :-)

Zusammanfassung

SQL Server 2008 ermöglicht ein effektiveres Arbeiten mit Daten

Geo- und unstrukturierte DatenT-SQL VerbesserungenNeue DatentypenSynchronisierungen von DatenADO.NET Entity Framework…

Resources

Learn more about data programmabilityhttp://www.microsoft.com/sql/2008/technologies/dataprogrammability.mspx

Learn more about spatial datahttp://www.microsoft.com/sql/2008/technologies/spatial.mspx

Learn more about SQL Server 2008http://www.microsoft.com/sql/2008/default.mspx

Discover SQL Server 2008: Webcasts, Virtual Labs, and White Papershttp://www.microsoft.com/sql/2008/learning/default.mspx

SQL Server 2008 traininghttp://www.microsoft.com/learning/sql/2008/default.mspx

Download latest SQL Server CTPhttp://www.microsoft.com/sql/2008/prodinfo/download.mspx

Join the SQL PASS communityhttp://www.sqlpass.org

Visual Studio 2008weitere Angebote

Visual Studio Team System Information DayRegelmäßige ganztägige Informationsveranstaltung von MicrosoftPraxisnahe Demos & viel Raum für DiskussionenDetails & Anmeldung: www.event-team.com/events/visualstudio

TeamConf 2008 – Die Visual Studio Team System KonferenzVSTS in der Praxis - 22.-24. April 2008 in MünchenAnwenderberichte (Siemens, ABB, Commerzbank, Datev, Münchener Rück,..)Fach- und TechnologievorträgeVortragsprogramm und Anmeldung: www.teamconf.de

Visual Studio Launch PromotionTauschen 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 Produktesvom 19. Februar bis zum 30. April 2008Nur bei den Partnern: PC Ware, SoftExpress, SOS und Zoschke (befinden sich alle in der Ausstellerhalle)

Ask the ExpertsWir 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.