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

58
SQL Server 2008 { Was ist neu für Entwickler? } Jens K. Süßmeyer, Daniel Walzenbach DB Consultant, Developer Evangelist Microsoft Deutschland GmbH

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

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

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

DB Consultant, Developer EvangelistMicrosoft Deutschland GmbH

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

Überblick

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

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

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

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

{ Unstrukturierte Daten }

demoDer FileStream Datentyp

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

Überblick

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

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

Neue Zeiten sind angebrochen

DateTimeOffset(n)

DateTime2(n)

Date

Time(n)

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

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

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

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

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

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

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

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

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

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

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

Überblick

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

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

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.

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

Hierarchische Daten in SQL 2005

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

Rekursion

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

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

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

HierarchyID erweitern

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

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

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)

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

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)

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

{ Hierarchische Daten }

demo Hierarchische Struktur

anlegen verwalten

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

Überblick

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

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

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

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

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

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

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…)

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

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

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

Merge statement Aktionen

WHEN SOURCE NOT MATCHED (RIGHT OUTER JOIN)

Ermöglicht Operationen wenn Datensätze im Ziel aber nicht in der Quelle existieren

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

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

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

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

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

{ Merge }

demoDie Verwendung von Merge Statements

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

Überblick

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

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

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

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

{ Integrierte Volltextsuche }

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

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

Überblick

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

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

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

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

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

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

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

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

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“

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

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

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

{ Table-valued parameters}

demoMit Table-valued parameters arbeiten

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

Überblick

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

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

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

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

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

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

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.

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

Geodaten Methoden des Geometry Datentyps

OGC Methoden (43)Erweiterte Methoden (10)OGC Statische Methoden (16)Erweiterte Statische Methoden (4)

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

{ JobScout24 }

Sven SchneiderTeamleiter SoftwareentwicklungJobScout24

Partner

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

{ Geodaten }

demo Übersicht Geodaten Mit Geodaten arbeiten

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

Überblick

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

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

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

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

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)

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

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)

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

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

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

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

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

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

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

Die kleinen Dinge im Leben…

Intellisense :-)

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

Zusammanfassung

SQL Server 2008 ermöglicht ein effektiveres Arbeiten mit Daten

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

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

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

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

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)

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

Ask the ExpertsWir freuen uns auf Ihre Fragen: Technische Experten stehen Ihnen während der gesamten Veranstaltung in der Haupthalle zur Verfügung.

Page 58: 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.