2016-06-29 17 views
2

Es gibt viele Online-Dokumentation zu lesen, die zeigen, wie SSIS Projektparameter über eine der lesen:BimlScript C# -Code Nuggets SSIS Projektparameter

  • Biml Tags
  • SSIS C# Skript Aufgabe

aber Ich habe mehr als sechs Stunden damit verbracht, einen Weg zu finden, von C# -Code innerhalb BimlScript zu tun. Zugegeben, ich bin ein Biml n00b, also habe ich vielleicht keine Lösung gefunden, weil es so einfach ist, dass niemand darüber spricht.

Meine Biml (sensible Daten mit ersetzt '***'):

<#@ template language="C#" #> 
<#@ import namespace="System.Data" #> 
<#@ import namespace="System.Data.OleDb" #> 

<# 
    string connString = "Data Source=***;Provider=***;Persist Security Info=True;Location=***;uid=***;pwd=" + #>@[$Project::PW]<#; 
    OleDbConnection db2Conn = new OleDbConnection(connString); 
    string queryString = "SELECT * FROM SYSIBM.SYSTABLES WHERE DBNAME = '***' WITH UR"; 

    OleDbCommand myCommand = new OleDbCommand(queryString); 
    myCommand.Connection = db2Conn; 
    db2Conn.Open(); 
    myCommand.ExecuteReader(); 
    db2Conn.Close(); 
#> 

<Biml xmlns="http://schemas.varigence.com/biml.xsd"> 
    <Packages> 
    <Package Name="DB2Test" /> 
    </Packages> 
</Biml> 

Das den Fehler gibt:

Operator '+' cannot be applied to operands of type 'string' and 'void' 

, die mir, dass die String-Verkettung macht denken löst, bevor sie das bekommen Projektparameter.

Beachten Sie, dass es funktioniert, wenn ich das Kennwort in der Verbindungszeichenfolge festcode.

+0

Ich bin von Biml zu einem ETL/ELT-Automatisierungsprodukt übergegangen, aber ich bin immer noch neugierig auf das Lesen von SSIS-Projektparametern mit BimlScript. Wenn jemand es herausfindet, sogar in einigen Monaten, dann lassen Sie die Antwort hier bitte fallen, und ich bestätige und akzeptiere es. –

Antwort

0

Ich bin nicht ganz sicher, dass dies möglich ist, da meines Wissens die C# in Biml konvertiert wird und dann, dass Biml verwendet wird, um das SSIS-Paket zu erstellen.

In meinen Projekten erstelle ich das gesamte SSIS-Projekt in Biml und erzeuge die gesamte Lösung jedes Mal neu, wenn ich Änderungen vornehmen muss. Um dies zu erleichtern, erstellte ich eine C# -Datei namens Variablen.cs - die ich in jeder Biml-Datei unter Verwendung <#@ code file="Variables.cs" #> referenzieren, die alle Werte und Funktionen enthält, um DataTables zurückzugeben, die ich in der Biml verweisen muss.

Beispiel:

<# foreach (DataRow row in ConnectionVariables.GetTranConnConfig("Target","").Rows) { #> 
    <OleDbConnection Name="TranTarget_<#=row["TargetDatabaseName"]#>" 
        ConnectionString="Data Source=<#=row["TargetServerName"]#>;Initial Catalog=<#=row["TargetDatabaseName"]#>;Integrated Security=SSPI;Provider=<#=ConnectionVariables.GetConfigSQLProvider()#>;" 
        CreateInProject="true" 
        > 
     <Expressions> 
      <Expression ExternalProperty="ConnectionString" 
        >@[$Project::TranTarget_<#=row["TargetDatabaseName"]#>_Conn]</Expression> 
     </Expressions> 
    </OleDbConnection> 
<# } #> 

, die sowohl die Ergebnisse von Abfragen verwendet, die in der C# fest einprogrammiert Metadaten in einer Konfigurationsdatenbank und projektspezifische Werte zu verwenden, wie zum Beispiel dem Server und Datenbank, die Metadaten enthält, den Namen des zu erstellenden Projekts usw. Auf diese Weise kann ich ein oder zwei Dinge in Variables.cs ändern und die generische Biml-Lösung in verschiedenen Umgebungen verwenden.

+0

Danke, Iamdave. Ich halte das für jetzt unmöglich. –