Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH

Ähnliche Präsentationen


Präsentation zum Thema: "SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH"—  Präsentation transkript:

1 SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH Sebastian.Weber@microsoft.com http://blogs.msdn.com/sebweber

2 1 SQL Server 2005 Plattform

3 2 Agenda Was steckt hinter der Integration? Prozeduren und Funktionen Ausführungskontext Eigene Datentypen Kurz um: Wie & Warum?

4 3 Bin nach Hex: T-SQL vs. C# if @bin is null return null declare @len int, @b tinyint, @lowbyte tinyint, @hibyte tinyint, @index int, @str nchar(2), @result nvarchar(4000) set @len = datalength(@bin) set @index = 1 set @result = '0x' while @index <= @len begin set @b = substring(@bin, @index, 1) set @index = @index + 1 set @lowbyte = @b & 0xF set @hibyte = @b & 0xF0 if @hibyte > 0 set @hibyte = @hibyte / 0xF set @result = @result + ((case when @hibyte < 10 then convert(varchar(1), @hibyte) when @hibyte = 10 then 'A' when @hibyte = 11 then 'B' when @hibyte = 12 then 'C' when @hibyte = 13 then 'D' when @hibyte = 14 then 'E' when @hibyte = 15 then 'F' else 'Z' end) + (case when @lowbyte < 10 then convert(varchar(1), @lowbyte) when @lowbyte = 10 then 'A' when @lowbyte = 11 then 'B' when @lowbyte = 12 then 'C' when @lowbyte = 13 then 'D' when @lowbyte = 14 then 'E' when @lowbyte = 15 then 'F' else 'Z' end)) end T-SQL if (value == null) return null; StringBuilder sb = new StringBuilder(); foreach (byte b in value) sb.Append(b.ToString("X2")); return sb.ToString(); C#

5 4 Was bietet die Integration? Serverseitige Routinen in C#, VB.NET, … Stored Procedures, Functions, Triggers, Data Types & Aggregates Erweitertes Sicherheitsmodell Einheitliche Entwicklungsumgebung Performancevorteile

6 5.NET oder T-SQL? Verwenden Sie.NET Routinen … … wenn es mit T-SQL nicht möglich ist … für aufwendige Rechenoperationen … um Logik zu implementieren … wenn auf wenige Daten zugegriffen wird Verwenden Sie T-SQL … … bei daten-intensiven Abfragen

7 6 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

8 7 Notwendige Erweiterungen.NET Framework 2.0 Neue Hosting APIs für CLR Integration Neue/Anpassungen ADO.NET Klassen T-SQL Neue Befehle für Assembly-Management Syntax Erweiterungen für Unterstützung von eigenen Datentypen u.w.

9 8 Assembly Sicherheitsmodell SAFE Standard, kein Zugriff auf externe Ressourcen und unmanaged Code EXTERNAL_ACCESS Wie Safe aber Zugriff auf externe Ressourcen UNSAFE Zugriff auf externe Ressourcen und unmanged Code erlaubt

10 9 Agenda Was steckt hinter der Integration? Prozeduren und Funktionen Ausführungskontext Eigene Datentypen Kurz um: Wie & Warum?

11 10 Prozeduren und Funktionen 4 Typen User-Defined Procedures (UDPs) Scalar-valued User-Defined-Functions (UDFs) Table-valued User-Defined-Functions (TVFs) User-Defined Triggers.NET Funktionen unterliegen den gleichen Restriktionen wie T-SQL Funktionen Keine Manipulation der Daten, deterministisch

12 11 Implementierung Deklarative Implementierung Statische Methoden mit Attribut vorab Anmeldung per Wrapper notwendig CREATE FUNCTION … CREATE PROCEDURE … CREATE TRIGGER … Ganz normaler Code SqlClient für Datenzugriff

13 12 Prozeduren und Funktionen

14 13 Agenda Was steckt hinter der Integration? Prozeduren und Funktionen Ausführungskontext Eigene Datentypen Kurz um: Wie & Warum?

15 14 Integration != Integration Hier: SQL 2000 Extended Stored Procedures Client SqlServr.exe Daten Ext. SP Select * 1. Connection Select * 2. Connection 2. Thread Abbildung aus A First Look at SQL Server 2005 for Developers, AW

16 15 SQL Server 2005 Beste Integration der Welt! SqlServr.exe Daten SqlCommand cmd =... cmd.ExecuteNonQuery() SqlCommand cmd =... cmd.ExecuteNonQuery() Managed Code Unmanaged Code PInvoke Abbildung aus A First Look at SQL Server 2005 for Developers, AW Client 1. Connection

17 16 Der Unterschied Zugriff auf Ausführungkontext ermöglicht Aufspringen auf die vorhandene Connection Zugriff auf Client Ausgabestrom Information, ob Ausführung unter SQL Server 2005 erfolgt

18 17 Zugriffsklassen SqlContext – Einstiegsklasse; Zugriff auf SqlPipe und SqlTriggerContext. IsAvailable gibt Auskunft ob Ausführung unter dem Sql Server 2005 erfolgt SqlPipe – Zugang zum Client Ausgabestrom SqlTriggerContext – Zugriff auf Trigger-spezifische Kontextinformationen

19 18 Umgang mit SqlContext

20 19 Einschränkungen Context Connections MARS (Multiple Active Result Sets) nicht unterstützt Nur eine offene Context Connection möglich SqlBulkCopy nicht unterstützt Update batching nicht unterstützt SqlNotificationRequest nicht unterstützt Auch normale Connections unterliegen Einschränkungen (kein asynchronous commands, keine SqlDependency …)

21 20 Agenda Was steckt hinter der Integration? Prozeduren und Funktionen Ausführungskontext Eigene Datentypen Kurz um: Wie & Warum?

22 21 Wann UDTs? Implementierung eigener User-Defined Types (UDTs) in VB.NET, C# etc. möglich Gedacht für die Implementierung skalarer Datentypen, nicht Geschäfts- objekte Geschäftsobjekte per O/R Mapper, XML- Serialisierung etc. speichern

23 22 Implementierung Referenz-Typ Implementierung als Class Zeiger auf Speicherbereich, wo Daten liegen Wert-Typ Implementierung als Struct (C#) / Structure (VB.NET) Speicherung erfolgt als Bit-Sequenz Beide sind auf 8 kB limitiert Unterschiede liegen im internen Speichermanagement Weitere Informationen unter MSDN

24 23 Eigene Datentypen

25 24 Agenda Was steckt hinter der Integration? Prozeduren und Funktionen Ausführungskontext Eigene Datentypen Kurz um: Wie & Warum?

26 25 Wie & Warum? Wie? Entwicklung in C#, VB.NET,... Attribute & Templates Warum? Implementierung von Geschäftslogik Einfacher & mächtiger Schneller bei Rechenoperationen

27 26 Fragen und Antworten Vielen Dank! Sebastian Weber Sebastian.Weber@microsoft.com http://blogs.msdn.com/sebweber

28 27 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.


Herunterladen ppt "SQL Server 2005 CLR Integration Sebastian Weber Microsoft Deutschland GmbH"

Ähnliche Präsentationen


Google-Anzeigen