sql server 2005.net integration sebastian weber developer evangelist microsoft deutschland gmbh
TRANSCRIPT
SQL Server 2005.NET IntegrationSQL Server 2005.NET Integration
Sebastian WeberSebastian WeberDeveloper EvangelistDeveloper EvangelistMicrosoft Deutschland GmbHMicrosoft Deutschland GmbH
AgendaAgenda
Übersicht CLR IntegrationÜbersicht CLR Integration
.NET Servercodeentwicklung.NET Servercodeentwicklung
ZusammenfassungZusammenfassung
Was bietet die Was bietet die Integration?Integration? Serverseitige Routinen in C#, VB.NET, Serverseitige Routinen in C#, VB.NET,
……
Stored Procedures, Functions, Triggers, Stored Procedures, Functions, Triggers,
Data Types & AggregatesData Types & Aggregates
Erweitertes SicherheitsmodellErweitertes Sicherheitsmodell
Einheitliche EntwicklungsumgebungEinheitliche Entwicklungsumgebung
PerformancevorteilePerformancevorteile
ImplementierungImplementierung
ImplementierungImplementierungServercodeServercode
Statische Statische Methoden mit Methoden mit „[Attribut]“„[Attribut]“
• Stored Procedures, Stored Procedures, Functions & Functions & TriggersTriggers
• AggregatesAggregates Implementierung Implementierung als Struct mit als Struct mit Attribut Attribut [SqlUserDefinedAggregate[SqlUserDefinedAggregate]]• TypesTypes Implementierung Implementierung als Klasse oder als Klasse oder Struct mit AttributStruct mit Attribut[SqlUserDefinedType][SqlUserDefinedType]
So geht‘s!So geht‘s!
SQL Abfragen: SELECT GetOrderCount(region) FROM order
SQL Abfragen: SELECT GetOrderCount(region) FROM order
VS .NET
Projekt
VS .NET
Projekt
VB,C#,C++ Build
SQL Serve
r
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 != IntegrationIntegration != IntegrationHier: SQL 2000 Extended Stored ProceduresHier: SQL 2000 Extended Stored Procedures
ClientClient
SqlServr.exeSqlServr.exe
Daten
Daten
Ext. SPSelect *Ext. SPSelect *
1. Connection
Select *Select *
2. Connection
2. Thread
Abbildung aus A First Look at SQL Server 2005 for Developers, AW
SQL Server 2005SQL Server 2005Beste Integration der Welt!Beste Integration der Welt!
SqlServr.exeSqlServr.exe
Daten
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
ClientClient1. Connection
Zugriff auf Ausführungskontext:+ Connections+ Ausgabestrom zum Client+ Trigger-Kontext+ …
SQLCLR ist standardmäßig deaktiviertSQLCLR ist standardmäßig deaktiviert
SQL Zugriffsrechte kontrollieren die SQL Zugriffsrechte kontrollieren die Erstellung von Assemblies und Erstellung von Assemblies und Routinen, sowie die AusführungRoutinen, sowie die Ausführung
Code Access Security (CAS) kontrolliert, Code Access Security (CAS) kontrolliert, was ein Assembly machen darfwas ein Assembly machen darf
SecuritySecurity
SecuritySecurity Die 3 Permission SetsDie 3 Permission Sets
SafeSafe Zugriff auf lokale Daten, eingeschränktes Zugriff auf lokale Daten, eingeschränktes
Programmiermodell (keine Static Member), nur managed Programmiermodell (keine Static Member), nur managed CodeCode
External_accessExternal_access Wie Safe, jedoch Zugriff auf Dateien, Registry, NetzwerkWie Safe, jedoch Zugriff auf Dateien, Registry, Netzwerk
UnsafeUnsafe Voller Zugriff, Unmanaged Code, keine Überprüfungen, Voller Zugriff, Unmanaged Code, keine Überprüfungen,
keine Einschränkungenkeine Einschränkungen
Einstellung wird bei Erstellung Einstellung wird bei Erstellung festgelegtfestgelegtcreate assembly MyAsm from ‘c:\foo.dll’create assembly MyAsm from ‘c:\foo.dll’
with permission_set = safewith permission_set = safe
.NET oder T-SQL?.NET oder T-SQL?
Verwenden Sie .NET Routinen …Verwenden Sie .NET Routinen … … … wenn es mit T-SQL nicht möglich istwenn es mit T-SQL nicht möglich ist … … für aufwendige Rechenoperationenfür aufwendige Rechenoperationen … … um Logik zu implementierenum Logik zu implementieren … … wenn auf wenige Daten zugegriffen wenn auf wenige Daten zugegriffen
wirdwird
Verwenden Sie T-SQL …Verwenden Sie T-SQL … … … bei datenintensiven Abfragenbei datenintensiven Abfragen
Fallweise Unterscheidung notwendig!!Fallweise Unterscheidung notwendig!!
AgendaAgenda
Übersicht CLR IntegrationÜbersicht CLR Integration
.NET Servercodeentwicklung.NET Servercodeentwicklung
ZusammenfassungZusammenfassung
.NET Integration.NET Integration
AgendaAgenda
Übersicht CLR IntegrationÜbersicht CLR Integration
.NET Servercodeentwicklung.NET Servercodeentwicklung
Zusammenfassung
ZusammenfassungZusammenfassung
Implementierung erfolgt in Implementierung erfolgt in gewohnter Umgebung mit gewohnter gewohnter Umgebung mit gewohnter .NET Klassenbibliothek.NET Klassenbibliothek
Integration ermöglicht Zugriff auf den Integration ermöglicht Zugriff auf den AusführungskontextAusführungskontext
Von der CLR-Integration gezielt Von der CLR-Integration gezielt Gebrauch machen, kein Ersatz für T-Gebrauch machen, kein Ersatz für T-SQLSQL Bspw. für die Implementierung von Bspw. für die Implementierung von
Business Logik und rechenintensiven Business Logik und rechenintensiven OperationenOperationen
MSDN Online – Alles für den EntwickleralltagMSDN Online – Alles für den Entwickleralltag Stets auf dem Laufenden mit dem Stets auf dem Laufenden mit dem MSDN NewsletterMSDN Newsletter, , RSS-RSS-
FeedsFeeds sowie personalisierten Infos & Services via sowie personalisierten Infos & Services via MSDN MSDN ConnectionConnection
Technische Informationen über die Technische Informationen über die MSDN Developer CenterMSDN Developer Center(z.B. Security), (z.B. Security), MSDN WebcastsMSDN Webcasts und der und der MSDN BibliothekMSDN Bibliothek
Informationen zu Produkten und begleitenden Services wie Informationen zu Produkten und begleitenden Services wie Training & ZertifizierungTraining & Zertifizierung, , technischem Supporttechnischem Support und und DownloadsDownloads
www.microsoft.com/germany/msdnwww.microsoft.com/germany/msdn
www.ineta.orgwww.ineta.org
www.codezone.dewww.codezone.deDas Developer Knowledge Network – Von Das Developer Knowledge Network – Von Entwicklern für Entwickler. Die Meta-Entwicklern für Entwickler. Die Meta-Suchmaschine mit über 10.000 Ressourcen, Suchmaschine mit über 10.000 Ressourcen, RSS-Feeds und vielem mehrRSS-Feeds und vielem mehr
INETA User GroupsINETA User Groups – Treffen Sie – Treffen Sie Gleichgesinnte in einer der mehr als 40 Gleichgesinnte in einer der mehr als 40 bundesweit vertretenen INETA User Groups mit bundesweit vertretenen INETA User Groups mit über 4.500 Mitgliedernüber 4.500 Mitgliedern
Ressourcen für Ihren ErfolgRessourcen für Ihren ErfolgVon Microsoft und den CommunitiesVon Microsoft und den Communities
Vielen Dank!Vielen Dank!
Sebastian WeberSebastian [email protected]@microsoft.com
http://sebastianweber.orghttp://sebastianweber.org