{ 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.