Im ersten Teil meiner kleinen Biml Serie habe ich kurz erklärt wie der BIDS Helper das Visual Studio respektive BIDS um Biml Features erweitert und wie ein einfaches Paket in Biml aussehen kann.
In diesem Teil möchte ich kurz auf die Elemente Connections, Packages und Tasks innerhalb eines Biml Scrips eingehen.
Connections
Über die Elemente Connections werden die Datenverbindungen innerhalb des SSIS Paketes definiert. Hierüber generierte Objekte finden sich später in dem “Verbindungs-Manager” innerhalb des BIDS wieder.
Das Connections Element stellt eine Collection dar, in der verschiedene Connections wie AdoNetConnection, ExcelConnection, FileConnection, OleDbConnection usw. definiert werden.
Jedes Connection Object enthält seines Typs nach verschiedene Attribute, über die die jeweilige Connection definiert wird. Um eine einfache OleDb Connection zu erstellen, muss das Attribut Name sowie das Attribut ConnectionString angegeben werden. Über das Name-Attribut wird später innerhalb des Paketes auf die Connection zugegriffen. Wer nicht genau weiß, wie der ConnectionString für “seine” OleDb Connection aussieht, dem empfehle ich die Seite ConnectionStrings.com.
OleDb Connection
1: <OleDbConnection Name="AdventureWorks" ConnectionString="Server=.;Initial Catalog=AdventureWorks;Integrated Security=SSPI;Provider=SQLNCLI10"/>
SMTP Connection
1: <SmtpConnection Name="Mailserver" SmtpServer="mail.meinserver.de" />
Eine Connection wird immer zu Beginn des BimlScripts erstellt. Werden mehrere Pakete mit einem BimlScript generiert, so müssen die einzelnen Connections im Package zugeordnet werden.
Packages
Über die Collection Packages können verschiedene SSIS Pakete innerhalb eines BimlScripts erstellt werden. Jedes Paket muss mindestens über die Attribute Name und ConstraintMode verfügen. Das Attribut Name definiert dabei den Namen des Paketes und damit auch den Namen der dtsx-Datei. Über das Attribut ConstraintMode wird definiert ob die enthaltenen Task parallel oder linear ausgeführt werden sollen. Bei der linearen Ausführungen werden die einzelnen Task innerhalb einer BimlDatei automatisch ihrer Reihenfolge nach miteinander verbunden, bei der parallelen Ausführung müssen die alle Verbindungen zwischen den Tasks manuell im BimlScript definiert werden.
1: <Packages>
2: <Package Name="Biml Sample" ConstraintMode="Linear">
3: </Package>
4: </Packages>
Sollen mehrere SSIS Pakete aus einer BimlScript Datei erzeugt werden, so muss in jedem einzelnem Package die zu verwendende Connection über ihren Namen dem Paket zugeordnet werden.
1: <Package Name="Biml Sample 2" ConstraintMode="Linear">
2: <Connections>
3: <Connection ConnectionName="AdventureWorks" />
4: </Connections>
5: </Package>
Als weitere Elemente innerhalb eines Paketes können Events, Expressions und Variables genauso enthalten sein wie Tasks, die die spätere Ablaufsteuerung, Datenflüsse, Ergeignishandler usw. enthalten. Auf die einzelnen Elemente gehe ich in einem späteren Teil noch einmal genauer ein.
Tasks
Innerhalb eines Paketes befindet sich die Collection Tasks, in der die einzelnen Tasks der Ablaufsteuerung wie Backup, SendMail, DataProfiling oder auch der DataFlow Task definiert werden. Da die einzelnen Tasks in der Regel jeweils eigene Attribute haben und keine vereinheitlichte Konfigurationsangabe gemacht werden kann, hier einmal beispielhaft die Konfiguration des SendMail Tasks.
1: <SendMail Name="SendMail"
2: ToLine="ich@meinserver.de"
3: FromLine="ich@meinserver.de"
4: Subject="Biml SendMail Sample"
5: ConnectionName="MailServer"
6: Priority="High" >
7: <DirectInput>Dies ist der Beispiel Text</DirectInput>
8: </SendMail>
Zu beachten ist an dieser Stelle, dass innerhalb des SendMail Tasks die zuvor definierte SMTP Connection angegeben wird und die jeweiligen Werte innerhalb der Attribute Case Sensitive sind. Der eigentliche Text des SendMail Tasks wird hier innerhalb des Elementes “DirectInput” definiert. Wie auch innerhalb des BIDS kann der Content auch über eine Variable oder eine Datei hinzugefügt werden. Wichtig an dieser Stelle ist, dass die bekannte Definition des Contents über MessageSourceType und MessageSource in jeweils ein Element zusammengefasst worden ist.
Biml SendMail Sample.dtsx
Werden nun alle hier beschriebenen Elemente in einem Script zusammengefasst, so wird über den BIDS Helper ein zwar einfaches, aber dafür vollständiges, DTSX Paket generiert, welches eine Test-Email versendet.
1: <Biml xmlns="http://schemas.varigence.com/biml.xsd">
2: <Connections>
3: <SmtpConnection Name="MailServer" SmtpServer="mail.meinserver.de" />
4: </Connections>
5: <Packages>
6: <Package Name="Biml SendMail Sample"
7: AutoCreateConfigurationsType="None" ConstraintMode="Linear">
8: <Tasks>
9: <SendMail Name="SendMail"
10: ToLine="ich@meinserver.de"
11: FromLine="ich@meinserver.de"
12: Subject="Biml Sample"
13: ConnectionName="MailServer"
14: Priority="High" >
15: <DirectInput>Dies ist der Beispiel Text</DirectInput>
16: </SendMail>
17: </Tasks>
18: </Package>
19: </Packages>
20: </Biml>