Download - SQL CLR Integration
![Page 1: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/1.jpg)
SQL CLR Integration
PASS Treffen der
Regionalgruppe Sachsen
27.09.2010
Dorrit Riemenschneider
![Page 2: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/2.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
> Grundlagen
> Sicherheitsbetrachtungen
> Schnellanleitung
> Beispiele, Beispiele, …
• Zeichenfolgenverschlüsselung
• Reguläre Ausdrücke
• Splitten und Verketten von Zeichenfolgen
• Senden von E-Mails
• …
Agenda
2
![Page 3: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/3.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
> SQL 2005 ++
> SQL Server ist Host, .Net
ist Gast
> Assemblies werden in die
Datenbank importiert
• sys.assemblies
• sys.assembly_files
> Namespace
Microsoft.SqlServer.Server
> .Net Framework <= 3.5
Grundlagen
3
![Page 4: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/4.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
Sicherheitsbetrachtungen
4
> Assemblies müssen signiert werden
• Alternative: Datenbank als vertrauenswürdig einstufen
> Referenzieren von Framework-DLLs
• CLR Assembly muss mit PERMISSION_SET=SAFE registriert werden
> Referenzieren eigener oder 3rd Party DLLs
• Müssen als CLR Assemblies in die Datenbank importiert werden
Sicherheitsstufe Zugriff auf…
SAFE Ausschließlich eigene Datenbank
EXTERNAL_ACCESS Zusätzlich Dateisystem, Registry, Netzwerk
UNSAFE Zusätzlich Unmanaged Code
![Page 5: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/5.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
> CLR Funktionen aktivieren (1x pro Server)
> Erstellen der Assembly in Visual Studio
> Importieren in die Datenbank
> Erstellen einer CLR Funktion unter Verweis
auf die Methode in der .Net Assembly
Los geht‘s!
5
![Page 6: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/6.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
Zeichenfolgenverschlüsselung
6
![Page 7: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/7.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
… und natürlich auch Entschlüsselung
7
![Page 8: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/8.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
Reguläre Ausdrücke
8
> Prüfung, ob Zeichenfolge einem regulären Ausdruck entspricht
> Klasse System.Text.RegularExpressions.Regex
> Tipp: http://www.regular-expressions.info
Beispiel Regulärer Ausdruck
PLZ (Deutschland) ^(D-)?\d{5}$
Url ^http(s)?://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
E-Mail-Adresse ^[a-zA-Z\.\-_]+@([a-zA-Z\.\-_]+\.)+[a-zA-Z]{2,4}$
IP-Adresse (lazy) ^\b(?:\d{1,3}\.){3}\d{1,3}\b$
IP-Adresse (strong)
^\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-
4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-
9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b$
![Page 9: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/9.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
Reguläre Ausdrücke (E-Mail-Adresse)
9
![Page 10: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/10.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
Reguläre Ausdrücke (generisches Beispiel)
10
![Page 11: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/11.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
Splitten von Zeichenfolgen
11
> Transformieren einer durch Separatoren getrennten Zeichenfolge in eine
Tabelle
![Page 12: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/12.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
Splitten von Zeichenfolgen (Fortsetzung)
12
![Page 13: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/13.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
Verketten von Zeichenfolgen
13
> Realisierung mittels SQL benutzerdefiniertem Aggregat
• Separate Klasse pro Aggregat erforderlich
> Attribute [Serializable] und [SqlUserDefinedAggregate]
> Klasse ableiten von IBinarySerialize
• Implementieren der Methoden Read und Write
> Weitere zu implementierende Methoden:
• Init: Initialize the internal data structures
• Accumulate: Accumulate the next value, not if the value is null
• Merge: Merge the partially computed aggregate with this aggregate
• Terminate: Called at the end of aggregation, to return the results of the
aggregation
> http://technet.microsoft.com/en-us/library/ms131056%28SQL.90%29.aspx
![Page 14: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/14.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
Verketten von Zeichenfolgen (Fortsetzung)
14
![Page 15: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/15.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
E-Mail senden
15
> Verwendung:
• SQL Server Express
• (noch) mehr Möglichkeiten als bei xp_sendmail
(Konfiguration durch erweiterte Eigenschaften,
Anmeldung an SMTP Server möglich)
![Page 16: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/16.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
E-Mail senden (Fortsetzung)
16
> Achtung: Sicherheitsstufe muss mindestens EXTERNAL_ACCESS sein
![Page 17: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/17.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
> Abfragen eines Webservice (z.B. Börsenkurse,
Währungsumrechnung)
> Export einer Tabelle/eines Abfrageergebnisses
nach XML oder CSV
> SQL Server Reporting Service Berichte als
PDF per E-Mail versenden
> …
Weitere Ideen
17
![Page 18: SQL CLR Integration](https://reader031.vdocuments.net/reader031/viewer/2022020110/55957f891a28abd8318b45a0/html5/thumbnails/18.jpg)
SeiteCommunardo Software GmbH · Kleiststraße 10 a · D-01129 Dresden/Germany · Fon +49 (0) 351/833 820 · Mail [email protected] · www.communardo.de
Vielen Dank!
18
> www.communardo.de/techblog/author/dri
> www.xing.com/profile/Dorrit_Riemenschneider
> twitter.com/sharepoint_team