SQL Server 2005.NET Integration Sebastian Weber Developer Evangelist Microsoft Deutschland GmbH
Agenda Übersicht CLR Integration Übersicht CLR Integration.NET Servercodeentwicklung.NET Servercodeentwicklung Zusammenfassung Zusammenfassung
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
Implementierung ImplementierungServercode Statische Methoden mit [Attribut] Statische Methoden mit [Attribut] Stored Procedures, Functions & Triggers Stored Procedures, Functions & Triggers Aggregates Aggregates Implementierung als Struct mit Attribut [SqlUserDefinedAggregate] Implementierung als Struct mit Attribut [SqlUserDefinedAggregate] Types Types Implementierung als Klasse oder Struct mit Attribut Implementierung als Klasse oder Struct mit Attribut[SqlUserDefinedType]
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
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
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 Zugriff auf Ausführungskontext: + Connections + Ausgabestrom zum Client + Trigger-Kontext + …
SQLCLR ist standardmäßig deaktiviert SQLCLR ist standardmäßig deaktiviert SQL Zugriffsrechte kontrollieren die Erstellung von Assemblies und Routinen, sowie die Ausführung SQL Zugriffsrechte kontrollieren die Erstellung von Assemblies und Routinen, sowie die Ausführung Code Access Security (CAS) kontrolliert, was ein Assembly machen darf Code Access Security (CAS) kontrolliert, was ein Assembly machen darf Security
Security Die 3 Permission Sets Die 3 Permission Sets Safe Safe Zugriff auf lokale Daten, eingeschränktes Programmiermodell (keine Static Member), nur managed Code Zugriff auf lokale Daten, eingeschränktes Programmiermodell (keine Static Member), nur managed Code External_access External_access Wie Safe, jedoch Zugriff auf Dateien, Registry, Netzwerk Wie Safe, jedoch Zugriff auf Dateien, Registry, Netzwerk Unsafe Unsafe Voller Zugriff, Unmanaged Code, keine Überprüfungen, keine Einschränkungen Voller Zugriff, Unmanaged Code, keine Überprüfungen, keine Einschränkungen Einstellung wird bei Erstellung festgelegt Einstellung wird bei Erstellung festgelegt create assembly MyAsm from c:\foo.dll with permission_set = safe
.NET oder T-SQL? Verwenden Sie.NET Routinen … Verwenden Sie.NET Routinen … … wenn es mit T-SQL nicht möglich ist … wenn es mit T-SQL nicht möglich ist … für aufwendige Rechenoperationen … für aufwendige Rechenoperationen … um Logik zu implementieren … um Logik zu implementieren … wenn auf wenige Daten zugegriffen wird … wenn auf wenige Daten zugegriffen wird Verwenden Sie T-SQL … Verwenden Sie T-SQL … … bei datenintensiven Abfragen … bei datenintensiven Abfragen Fallweise Unterscheidung notwendig!! Fallweise Unterscheidung notwendig!!
Agenda Übersicht CLR Integration Übersicht CLR Integration.NET Servercodeentwicklung.NET Servercodeentwicklung Zusammenfassung Zusammenfassung
.NET Integration
Agenda Übersicht CLR Integration Übersicht CLR Integration.NET Servercodeentwicklung.NET Servercodeentwicklung Zusammenfassung
Zusammenfassung Implementierung erfolgt in gewohnter Umgebung mit gewohnter.NET Klassenbibliothek Implementierung erfolgt in gewohnter Umgebung mit gewohnter.NET Klassenbibliothek Integration ermöglicht Zugriff auf den Ausführungskontext Integration ermöglicht Zugriff auf den Ausführungskontext Von der CLR-Integration gezielt Gebrauch machen, kein Ersatz für T-SQL Von der CLR-Integration gezielt Gebrauch machen, kein Ersatz für T-SQL Bspw. für die Implementierung von Business Logik und rechenintensiven Operationen Bspw. für die Implementierung von Business Logik und rechenintensiven Operationen
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