BimlScript C#代码块用于读取SSIS项目参数

时间:2016-06-29 17:58:22

标签: c# ssis biml

有大量在线文档显示如何通过以下方式之一读取SSIS项目参数:

  • Biml标签
  • SSIS C#脚本任务

但我花了六个多小时试图通过BimlScript 中的 C#代码找到方法。当然,我是Biml n00b,所以也许我还没有找到解决方案,因为没有人能够轻易谈论它。

我的Biml(敏感数据替换为' ***'):

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

这给出了错误:

puts "Some words #{Lookup1[input[2]].gsub("[", "(")} some more words"

这让我觉得字符串连接在它可以获取项目参数之前解析。

请注意,如果我在连接字符串中对密码进行硬编码,则可以正常工作。

1 个答案:

答案 0 :(得分:0)

我不完全确定这是可能的,据我所知,C#被转换为Biml,然后Biml用于创建SSIS包。

在我的项目中,我在Biml中创建了整个SSIS项目,并在每次需要进行更改时重新创建整个解决方案。为了实现这一点,我创建了一个名为Variables.cs的C#文件 - 我在每个Biml文件中使用<#@ code file="Variables.cs" #>引用,该文件包含返回我需要在Biml中引用的DataTables的所有值和函数。

例如:

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

它使用在配置数据库中使用元数据的查询结果和在C#中硬编码的项目特定值,例如保存元数据的服务器和数据库,要创建的项目的名称等。通过执行此操作,我可以在Variables.cs中更改一两件事,并在不同的环境中使用通用的Biml解决方案。