2016-06-29 21 views
2

有大量的在线文档展示如何通过一个阅读SSIS项目参数:BimlScript C#代码掘金阅读SSIS项目参数

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

但我花了六个多小时试图找到一种方法来从BimlScript内的C#代码中找到一种方法。当然,我是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自动化产品,但我仍然对使用BimlScript读取SSIS项目参数感到好奇。如果有人知道,甚至几个月后,请将答案放在这里,我会确认并接受它。 –

回答

0

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

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

例如:

<# 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解决方案。

+0

谢谢,iamdave。现在我会认为这是不可能的。 –