260 likes | 359 Views
SQL Server 2005 CLR-Integration. Jörg Neumann RESCO GmbH Hamburg. Jörg Neumann. IT-Consultant bei der RESCO GmbH in Hamburg. Hält Schulungen und Coachings zum SQL Server 2005 Schreibt für verschiedene Fachzeitschriften Schreibt an einem Buch über den SQL Server 2005
E N D
SQL Server 2005CLR-Integration Jörg Neumann RESCO GmbH Hamburg
Jörg Neumann • IT-Consultant bei der RESCO GmbH in Hamburg. • Hält Schulungen und Coachings zum SQL Server 2005 • Schreibt für verschiedene Fachzeitschriften • Schreibt an einem Buch über den SQL Server 2005 • Hält Vorträge auf Entwicklerkonferenzen • Schwerpunkte: • SQL Server • Smart Clients • Visual Studio Extensibility • Links zu weiterführenden Artikeln und Büchern finden Sie am Ende der Slides. • Kontakt: Joerg.Neumann@RESCO.de
Agenda • Warum CLR-Integration? • Details zur Integration • CLR-Datenbankobjekte erstellen • Serverseitiger Zugriff mit ADO.NET
Agenda • Warum CLR-Integration? • Details zur Integration • CLR-Datenbankobjekte erstellen • Serverseitiger Zugriff mit ADO.NET
Warum CLR-Integration? • T-SQL • Für mengenorientierten Zugriff ausgelegt • Eingeschränkte Funktionalität • Eingeschränkte Erweiterbarkeit • Eingeschränktes Programmiermodell • Maximale Performance
Warum CLR-Integration? • Extended Stored Procedures • C++, Speichermanagement, Sicherheit • Schwer zu debuggen • Loop-Back-Connection zur DB
Warum CLR-Integration? • SQLCLR • Sprach- und Funktionsvielfalt von .NET • Speichermanagement • Sicherheit • Inprocess-Datenzugriff • Mit T-SQL kombinierbar
T-SQL vs. SQLCLR • T-SQL • Bei mengenorientierten Operationen • High-Performance-Zugriffe • SQLCLR • Bei zeilenorientierten Operationen • Komplexen Berechnungen • Regular Expressions • Verschlüsselung • Stringmanipulation • Externe Zugriffe
Wofür SQLCLR nicht ist • Ersatz für T-SQL • Serverseitige Datenzugriffsschicht • O/R-Mapping mit UDTs • Word/Excel/PDF-Generierung • Image Processing
Agenda • Warum CLR-Integration? • Details zur Integration • CLR-Datenbankobjekte erstellen • Serverseitiger Zugriff mit ADO.NET
SQL Server vs. CLR • Speichermanagement • Thread-Management • Typsystem • Sicherheit • Verfügbarkeit • CLR-Integration muss explizit aktiviert werden
CLR-Erweiterungen in .NET 2.0 • Runtime Hosting API • Assembly Loading • AppDomain Management • Thread-Management/Synchronisation • Deadlock-Erkennung • Security Management • Speicherverwaltung
Sicherheitsprüfungen • Prü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
Agenda • Warum CLR-Integration? • Details zur Integration • CLR-Datenbankobjekte erstellen • Serverseitiger Zugriff mit ADO.NET
CLR-Datenbankobjekte erstellen • CLR-Methoden werden mit Attributen gekennzeichnet • SqlProcedure • SqlFunction • SqlUserDefinedAggregate • SqlUserDefinedType • SqlTrigger • Enthalten zum Teil auch Laufzeitinformationen • Für jede CLR-Methode wird ein Datenbankobjekt erstellt
Demo CLR-Prozedur erstellen
Agenda • Warum CLR-Integration? • Details zur Integration • CLR-Datenbankobjekte erstellen • Serverseitiger Zugriff mit ADO.NET
Zugriff auf die aktive Session Zugriff auf den Ausgabestrom Zugriff auf Trigger-Daten Definition einer Datenzeile Serverseitiges ADO.NET • Namespace Microsoft.SqlServer.Server • Programmiermodell wie auf dem Client • SqlConnection • SqlDataAdapter • SqlCommand • Zusätzliche Serverklassen • SqlContext • SqlPipe • TriggerContext • DataRecord
Datenbankverbindung herstellen SqlConnection SqlConnection connection = new SqlConnection("Context Connection = true");
SqlPipe • Daten an den Aufrufer senden • Send(), ExecuteAndSend() • SendResultsStart(), …Row(), …End()
Demo Datenzugriff
Ressourcen Bücher • A First Look at SQL Server 2005 for Developers Bob Beauchemin u.a., Addison-Wesley, ISBN: 0321180593 Artikel • Using CLR Integration in SQL Server 2005http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnsql90/html/sqlclrguidance.asp Links • SQL 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/