SQL Server 2005 Übersicht für Entwickler Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH
Schwerpunkte SQL Server 2005 Integration mit Visual Studio und.NET Integration mit Visual Studio und.NET Native XML-Unterstützung Native XML-Unterstützung Interoperabilität durch Webservices Interoperabilität durch Webservices Developer Ready Vielfältige Erweiterungen bei den Verfügbarkeits-Technologien Vielfältige Erweiterungen bei den Verfügbarkeits-Technologien Mehr Sicherheit und Geschwindigkeit Mehr Sicherheit und Geschwindigkeit Selbstmanagement und Optimierung Selbstmanagement und Optimierung Mission Ready Business Intelligence out-of-the-Box Business Intelligence out-of-the-Box Datenintegration und -aufbereitung (ETL) Datenintegration und -aufbereitung (ETL) Entscheidungsunterstützung durch umfangreiches Datamining und Reporting Entscheidungsunterstützung durch umfangreiches Datamining und Reporting Decision Ready
Agenda T-SQL Erweiterungen T-SQL Erweiterungen.NET Framework Integration.NET Framework Integration Web Services Web Services XML-Unterstützung XML-Unterstützung Service Broker Service Broker
Viele neue Helfer … Neue Datentypen Neue Datentypen DDL Trigger DDL Trigger DML mit Ausgabe DML mit Ausgabe TOP TOP DRI Erweiterungen DRI Erweiterungen Fehlerbehandlung Fehlerbehandlung CTE CTE Except und Intersect Except und Intersect Ranking Funktionalität Ranking Funktionalität Index Verbesserungen Index Verbesserungen Snapshot Isolation Level Snapshot Isolation Level Recompile Optimierung Recompile Optimierung XML Showplan XML Showplan
Common Table Expressions Common Table Expression (CTE) Common Table Expression (CTE) Sind so was wie ad-hoc views Sind so was wie ad-hoc views Sind in SQL-99 definiert Sind in SQL-99 definiert Sind weniger kompliziert als man denkt Sind weniger kompliziert als man denkt CTEs sind Eintrittskarte zur Rekursion CTEs sind Eintrittskarte zur Rekursion Iterativer Ansatz meist deutlich aufwändiger Iterativer Ansatz meist deutlich aufwändiger
So sieht eine CTE aus! WITH ( ) AS ( ) SELECT * FROM WITH ProdukteCTE (Name, Kategorie) AS ( SELECT PName, KName FROM Produkte P INNER JOIN Kategorien K ON P.KategorieID = K.ID ) SELECT * FROM ProdukteCTE …
T-SQL
Agenda T-SQL Erweiterungen T-SQL Erweiterungen.NET Framework Integration.NET Framework Integration Web Services Web Services XML-Unterstützung XML-Unterstützung Service Broker Service Broker
Was bietet die Integration? Serverseitige Routinen in C#, VB.NET, … Serverseitige Routinen in C#, VB.NET, … Stored Procedures, Functions, Triggers, Data Types & Aggregates Stored Procedures, Functions, Triggers, Data Types & Aggregates Erweitertes Sicherheitsmodell Erweitertes Sicherheitsmodell Einheitliche Entwicklungsumgebung Einheitliche Entwicklungsumgebung Performancevorteile Performancevorteile
So gehts! SQL Abfragen: SELECT GetOrderCount(region) FROM order VS.NET Projekt VB,C#,C++ Build SQL Server SQL Definitionen: create assembly … create function … create procedure … create trigger … create type … SQL Definitionen: create assembly … create function … create procedure … create trigger … create type … Assembly
.NET Framework Integration
Agenda T-SQL Erweiterungen T-SQL Erweiterungen.NET Framework Integration.NET Framework Integration Web Services Web Services XML-Unterstützung XML-Unterstützung Service Broker Service Broker
Zahlreiche Zugriffsoptionen vorhanden Zahlreiche Zugriffsoptionen vorhanden Aber 1: trotzdem nicht für jeden erreichbar Aber 1: trotzdem nicht für jeden erreichbar Aber 2: weit weg vom Server Aber 2: weit weg vom Server Zugang zum SQL Server 2000 TDS/TCPNamedPipesTDS/TCPNamedPipesODBC, OLE DB, Ado.NetODBC, Ado.Net SQL SERVER SQLXMLIISSQLXMLIIS
Zugang zum SQL Server 2005 TDS/TCPNamedPipesTDS/TCPNamedPipesODBC, OLE DB, Ado.NetODBC, Ado.Net SQL SERVER SOAP/HTTPSOAP/HTTP SQLXMLIISSQLXMLIIS ClientClient
Native Web Services Interessant hinsichtlich Interoperabilität Interessant hinsichtlich Interoperabilität Getestet mit: Jbuilder 9, Axis 1.1, Perl, … Getestet mit: Jbuilder 9, Axis 1.1, Perl, … SOAP/HTTP SOAP/HTTP Läuft ohne IIS Läuft ohne IIS ~%40 schneller als SQLXML ~%40 schneller als SQLXML SQLXML bleibt bestehen SQLXML bleibt bestehen Updategrams, Bulkload, Query strings in URL Updategrams, Bulkload, Query strings in URL
Beispiel: Endpunkt erstellen CREATE ENDPOINT sql_endpoint STATE = STARTED AS HTTP( PATH = '/sql', AUTHENTICATION = ( INTEGRATED ), PORTS = ( CLEAR ), SITE = 'SERVER' ) FOR SOAP ( WEBMETHOD 'GetSqlInfo' (name= 'SPGetServerInfo '), WSDL = DEFAULT, SCHEMA = STANDARD, DATABASE = 'Demo', NAMESPACE = ' );
Anwendungsbeispiele Auslesen von Statusinformationen Auslesen von Statusinformationen System, aber auch der Anwendung System, aber auch der Anwendung Prozesse anstoßen Prozesse anstoßen Verwenden Sie Native Web Services nicht Verwenden Sie Native Web Services nicht für den Aufbau von Webfarms für den Aufbau von Webfarms für Anwendungen mit Echtzeitanforderungen und hohen Zugriffszahlen für Anwendungen mit Echtzeitanforderungen und hohen Zugriffszahlen
Agenda T-SQL Erweiterungen T-SQL Erweiterungen.NET Framework Integration.NET Framework Integration Web Services Web Services XML-Unterstützung XML-Unterstützung Service Broker Service Broker
& & XML mit dem Sql Server 2000 (SqlXml) XML mit dem Sql Server 2000 (SqlXml) Relationale Daten XML (FOR XML) Relationale Daten XML (FOR XML) XML Relationale Strukturen (OPEN XML) XML Relationale Strukturen (OPEN XML) XML-Dokumente als Text speichern XML-Dokumente als Text speichern SQL Server 2005 bietet aber mehr SQL Server 2005 bietet aber mehr XML-Datentyp mit XSD-Unterstützung XML-Datentyp mit XSD-Unterstützung XQuery/XPath im Sql-Statement nutzbar XQuery/XPath im Sql-Statement nutzbar Indexierung der XML-Knoten Indexierung der XML-Knoten Verbesserung FOR XML und OPEN XML Verbesserung FOR XML und OPEN XML
XML-Datentyp verwenden Indexierung möglich, wenn dem Xml ein Schema zugewiesen wurde (typisiert) Indexierung möglich, wenn dem Xml ein Schema zugewiesen wurde (typisiert) Volltext-Indexierung wird ebenfalls unterstützt! Volltext-Indexierung wird ebenfalls unterstützt! Natürlich auch per Management Studio … Natürlich auch per Management Studio … CREATE TABLE XmlTabelle { ID int, MeinXml XML ('MeinSchema.xsd') } CREATE INDEX idx_MeinXml ON XmlTabelle (MeinXml);
XML-Unterstützung
Agenda T-SQL Erweiterungen T-SQL Erweiterungen.NET Framework Integration.NET Framework Integration Web Services Web Services XML-Unterstützung XML-Unterstützung Service Broker Service Broker
Was ist der Service Broker? A B KommunikationC Transport D Transport Transport Plattform für asynchrone Datenbankanwendungen Plattform für asynchrone Datenbankanwendungen Transaktionen Transaktionen Zuverlässige Übermittlung Zuverlässige Übermittlung T-SQL Integration T-SQL Integration
Beispiel: Nachricht senden UNIQUEIDENTIFIER; XML; = <Employee Name=Sebas.. BEGIN FROM SERVICE [//Adventure-Works.com/ExpenseClient] TO SERVICE '//Adventure-Works.com/Expenses' ON CONTRACT [//Adventure-Works.com/ExpenseProcessing]; SEND ON MESSAGE TYPE [//Adventure-Works.com/SubmitExpense]
Anwendungsbeispiele Service-orientierte Architekturen Service-orientierte Architekturen Parallele Stored Procedures Parallele Stored Procedures Eine SP startet weitere SPs Eine SP startet weitere SPs Asynchrone Trigger Asynchrone Trigger Asynchrone Stapelverarbeitung Asynchrone Stapelverarbeitung Eingehende Bestellung kommt in Queue Eingehende Bestellung kommt in Queue Parallele Abarbeitung der Queue Parallele Abarbeitung der Queue Verteilte Abarbeitung der Bestellung Verteilte Abarbeitung der Bestellung
Agenda T-SQL Erweiterungen T-SQL Erweiterungen.NET Framework Integration.NET Framework Integration Web Services Web Services XML-Unterstützung XML-Unterstützung Service Broker Service Broker
MSDN Online – Alles für den Entwickleralltag Stets auf dem Laufenden mit dem MSDN Newsletter, RSS-Feeds sowie personalisierten Infos & Services via MSDN Connection Stets auf dem Laufenden mit dem MSDN Newsletter, RSS-Feeds sowie personalisierten Infos & Services via MSDN Connection Technische Informationen über die MSDN Developer Center (z.B. Security), MSDN Webcasts und der MSDN Bibliothek Technische Informationen über die MSDN Developer Center (z.B. Security), MSDN Webcasts und der MSDN Bibliothek Informationen zu Produkten und begleitenden Services wie Training & Zertifizierung, technischem Support und Downloads Informationen zu Produkten und begleitenden Services wie Training & Zertifizierung, technischem Support und Downloads Das Developer Knowledge Network – Von Entwicklern für Entwickler. Die Meta-Suchmaschine mit über Ressourcen, RSS-Feeds und vielem mehr INETA User Groups – Treffen Sie Gleichgesinnte in einer der mehr als 40 bundesweit vertretenen INETA User Groups mit über Mitgliedern Ressourcen für Ihren Erfolg Von Microsoft und den Communities
Vielen Dank! Sebastian Weber