18
SQL CLR Integration PASS Treffen der Regionalgruppe Sachsen 27.09.2010 Dorrit Riemenschneider

SQL CLR Integration

Embed Size (px)

DESCRIPTION

PASS Treffen der Regionalgruppe Sachsen - Thema: CLR-Integration in SQL Server 2005 oder 2008

Citation preview

Page 1: SQL CLR Integration

SQL CLR Integration

PASS Treffen der

Regionalgruppe Sachsen

27.09.2010

Dorrit Riemenschneider

Page 2: SQL CLR Integration

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

> [email protected]

> www.communardo.de/techblog/author/dri

> www.xing.com/profile/Dorrit_Riemenschneider

> twitter.com/sharepoint_team