SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

26
SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg

Transcript of SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Page 1: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

SQL Server 2005CLR-Integration

Jörg Neumann

RESCO GmbH

Hamburg

Page 2: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Jörg NeumannIT-Consultant bei der RESCO GmbH in Hamburg.Hält Schulungen und Coachings zum SQL Server 2005Schreibt für verschiedene FachzeitschriftenSchreibt an einem Buch über den SQL Server 2005Hält Vorträge auf EntwicklerkonferenzenSchwerpunkte:

SQL ServerSmart ClientsVisual Studio Extensibility

Links zu weiterführenden Artikeln und Büchern finden Sie am Ende der Slides.Kontakt: [email protected]

Page 3: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Agenda

Warum CLR-Integration?

Details zur Integration

CLR-Datenbankobjekte erstellen

Serverseitiger Zugriff mit ADO.NET

Page 4: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Agenda

Warum CLR-Integration?Warum CLR-Integration?

Details zur Integration

CLR-Datenbankobjekte erstellen

Serverseitiger Zugriff mit ADO.NET

Page 5: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Warum CLR-Integration?T-SQL

Für mengenorientierten Zugriff ausgelegt

Eingeschränkte Funktionalität

Eingeschränkte Erweiterbarkeit

Eingeschränktes Programmiermodell

Maximale Performance

Page 6: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Warum CLR-Integration?Extended Stored Procedures

C++, Speichermanagement, Sicherheit

Schwer zu debuggen

Loop-Back-Connection zur DB

Externe DLL

RückgabeStored

Procedure Extended

Stored Procedure

Aufruf

Daten ermitteln

Page 7: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Warum CLR-Integration?SQLCLR

Sprach- und Funktionsvielfalt von .NET

Speichermanagement

Sicherheit

Inprocess-Datenzugriff

Mit T-SQL kombinierbar

Page 8: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Programmierbare ObjekteObjekte T-SQL CLR XP COM

Prozeduren

Funktionen

Trigger

Datentypen

Aggregate

Page 9: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

T-SQL vs. SQLCLRT-SQL

Bei mengenorientierten OperationenHigh-Performance-Zugriffe

SQLCLRBei zeilenorientierten OperationenKomplexen Berechnungen

Regular ExpressionsVerschlüsselungStringmanipulation

Externe Zugriffe

Page 10: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Wofür SQLCLR nicht istErsatz für T-SQL

Serverseitige Datenzugriffsschicht

O/R-Mapping mit UDTs

Word/Excel/PDF-Generierung

Image Processing

Page 11: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Agenda

Warum CLR-Integration?

Details zur IntegrationDetails zur Integration

CLR-Datenbankobjekte erstellen

Serverseitiger Zugriff mit ADO.NET

Page 12: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

SQL Server vs. CLR• Speichermanagement

• Thread-Management

• Typsystem

• Sicherheit

• Verfügbarkeit

• CLR-Integration muss explizit aktiviert werden

Page 13: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

CLR-Erweiterungen in .NET 2.0Runtime Hosting API

Assembly Loading

AppDomain Management

Thread-Management/Synchronisation

Deadlock-Erkennung

Security Management

Speicherverwaltung

Page 14: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

CLR-Integration

SQL Engine

Betriebssystem

Systemfunktionalität

Hosting Layer

CLR

Extener Aufruf

SQL Server

Hosting Layer

CLR

.NET Assembly

Funktion

Interner Aufruf

Page 15: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

SicherheitsprüfungenPrüfung bei der Installation

Prüfung vor der Ausführung

Unterstützte Framework-Assemblies:mscorlib.dll

system.data.dll

system.dll

system.xml.dll

system.security.dll

system.web.services.dll

Page 16: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Agenda

Warum CLR-Integration?

Details zur Integration

CLR-Datenbankobjekte erstellenCLR-Datenbankobjekte erstellen

Serverseitiger Zugriff mit ADO.NET

Page 17: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

CLR-Datenbankobjekte erstellenCLR-Methoden werden mit Attributen gekennzeichnet

SqlProcedure

SqlFunction

SqlUserDefinedAggregate

SqlUserDefinedType

SqlTrigger

Enthalten zum Teil auch Laufzeitinformationen

Für jede CLR-Methode wird ein Datenbankobjekt erstellt

Page 18: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Funktionen und Assemblies

DatenbankMyAssembly

[SqlProcedure]

public static void MyProc()

{

// Implementierung...

}

[SqlFunction]

public static int MyFunc()

{

// Implementierung...

}

CREATE FUNCTION MyFunc() RETURNS int

AS EXTERNAL NAMEMyAssembly.[MyNamespace.MyClass].MyFunc

CREATE PROCEDURE MyProc()

AS EXTERNAL NAMEMyAssembly.[MyNamespace.MyClass].MyProc

CREATE ASSEMBLY MyAssembly

FROM 'C:\MyAssembly.dll'

WITH PERMISSION_SET = SAFE

Page 19: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

DemoDemo

CLR-Prozedur erstellenCLR-Prozedur erstellen

Page 20: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Agenda

Warum CLR-Integration?

Details zur Integration

CLR-Datenbankobjekte erstellen

Serverseitiger Zugriff mit ADO.NETServerseitiger Zugriff mit ADO.NET

Page 21: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Serverseitiges ADO.NETNamespace Microsoft.SqlServer.ServerProgrammiermodell wie auf dem Client

SqlConnectionSqlDataAdapterSqlCommand

Zusätzliche ServerklassenSqlContextSqlPipeTriggerContextDataRecord

Zugriff auf die aktive Session

Zugriff auf den Ausgabestrom

Zugriff auf Trigger-Daten

Definition einer Datenzeile

Page 22: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

Datenbankverbindung herstellenSqlConnection

SqlConnection connection = new SqlConnection("Context Connection = trueContext Connection = true");

Page 23: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

SqlPipeDaten an den Aufrufer senden

Send(), ExecuteAndSend()

SendResultsStart(), …Row(), …End()

SQL Server

Ausgabe

SqlPipe

Prozedur A

Prozedur B

Prozedur C

Page 24: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

DemoDemo

DatenzugriffDatenzugriff

Page 25: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

????Fragen?Fragen?

Page 26: SQL Server 2005 CLR-Integration Jörg Neumann RESCO GmbH Hamburg.

RessourcenBücher

A First Look at SQL Server 2005 for Developers Bob Beauchemin u.a., Addison-Wesley, ISBN: 0321180593

ArtikelUsing CLR Integration in SQL Server 2005http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/sqlclrguidance.asp

LinksSQL Server 2005 Developer Centerhttp://www.msdn.microsoft.com/SQL/2005/

Virtual Lab: SQL Server 2005 SQL CLR Integrationhttp://msdn.microsoft.com/virtuallabs/sql/default.aspx/