2016-06-29 5 views
2

Там множество онлайн-документации показывает, как читать параметры проекта SSIS с помощью одного из:BimlScript C# код самородков читать проект SSIS параметры

  • теги BIML
  • SSIS C задачу # скрипт

но Я потратил более шести часов, пытаясь найти способ сделать это с Код C# в BimlScript. Конечно, я Biml n00b, так что, возможно, я не нашел решения, потому что так легко, что никто не говорит об этом.

Мои BIML (конфиденциальные данные заменяются '***'):

<#@ 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> 

Это дает ошибку:

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

, который заставляет меня думать, что конкатенация решает, прежде чем он может получить параметр проекта.

Обратите внимание, что если я жестко запрограммирую пароль в строке подключения, он отлично работает.

+0

Я перешел из Biml в продукт автоматизации ETL/ELT, но мне все еще интересно узнать параметры проекта SSIS с помощью BimlScript. Если кто-нибудь это выяснит, даже через несколько месяцев, пожалуйста, отбросьте ответ здесь, и я подтвержу его и приму. –

ответ

0

Я не совсем уверен, что это возможно, насколько я знаю, C# преобразуется в Biml, а затем Biml используется для создания пакета SSIS.

В моих проектах я создаю весь проект SSIS в Biml и воссоздаю все решение каждый раз, когда мне нужно внести изменения. Чтобы облегчить это, я создал файл C# с именем Variables.cs - который я ссылаюсь в каждом файле Biml с помощью <#@ code file="Variables.cs" #>, который содержит все значения и функции для возврата DataTables, которые мне нужно ссылаться в Biml.

Для примера:

<# 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> 
<# } #> 

Который использует и результаты запросов, которые используют метаданные в конфиге баз данных и проекты конкретных значений HARDCODED в C#, например, сервера и базы данных, которая содержит метаданные, имя проекта и т. д. Делая это, я могу изменить одну или две вещи в Variables.cs и использовать общее решение Biml в разных средах.

+0

Спасибо, iamdave. На этот раз я покажу это невозможно. –