BIML重用项目

时间:2017-03-24 11:55:41

标签: ssis ado.net biml

我创建了一个biml脚本,我想看看是否可以在SSIS项目中重用现有连接?

这是一个简单的脚本(通过不起作用的方式)我刚刚创建:

<Biml xmlns="http://schemas.varigence.com/biml.xsd">
<Connections>
    <CustomSsisConnection CreationName="SrcConn.conmgr" Name="SourceConnection"/>
</Connections>
<Packages>
    <Package Name="SRC_package" >
        <Tasks>
            <Dataflow Name="Data Flow Task">                    
                <Transformations>
                    <AdoNetSource ConnectionName="SourceConnection" Name="ADO_SRC" >
                        <DirectInput>

                        </DirectInput>
                    </AdoNetSource>
                </Transformations>
            </Dataflow>
        </Tasks>
    </Package>
</Packages>

2 个答案:

答案 0 :(得分:1)

不,你不能让Biml使用在Biml编译器知道的工件之外定义的连接。

听起来根本问题是你希望Biml create a ado.net connection pointing to a postgresql database我没有其中一个方便但我会根据connection strings

<Connections>
    <AdoNetConnection 
         Name="MyConnection"
         Provider="Devart.Data.PostgreSql.PgSqlConnection, Devart.Data.PostgreSql, Version=7.4.521.0, Culture=neutral, PublicKeyToken=00MyKey00" 
         ConnectionString="User Id=MyUserName;Password=MyPassword;Host=MyServerName;Database=MyDatabaseName;Persist Security Info=False;Unicode=True;Default FetchAll=true;" 
         DelayValidation="true" />
</Connections>

获取正确的提供商详细信息的最佳方法是下载BimlStudio或创建BimlOnline并使用付费工具的反向工程/导入包功能。 BimlStudio / Mist有5个免费反向工程限制,BimlOnline仍然处于测试阶段,所以我在那里的经历一直受到重创。就个人而言,我会将包最小化为连接管理器(选择全部,删除,另存为ImportMe.dtsx然后导入)。这个想法是需要进行逆向工程的越少,成功的几率就越大。

答案 1 :(得分:1)

是的,如果您小心,可以在BIML脚本中重用现有的SSIS项目连接管理器:

  1. 通过查看代码来查找现有项目连接管理器的GUID(不要查看属性页面,那里不显示GUID)。

  2. 在BIML脚本中重新创建主BIML节点下的同一项目连接管理器。我将此连接称为“假项目连接管理器”。使用与现有连接字符串相同的连接字符串。

    <Biml>
    <Connections>
          <Connection Name="EXISTING_CONMANAGER" CreateInProject="true" ConnectionString="Data Source=....;" /> 
    </Connections>
    
  3. 在Package Node下,再次重新创建相同的Project Connection Manager,这次使用真实现有的GUID。

          <Package Name= "myPackage" ConstraintMode="Parallel" ProtectionLevel="EncryptSensitiveWithUserKey">
    
          <Connections>
            <Connection ConnectionName="EXISTING_CONMANAGER" Id="{GUID_READ_FROM_EXISTING_CONMGR_FILE}"></Connection>
          </Connections>
    
  4. 现在,如果您修改此脚本,则会创建一个新的项目连接管理器,但它仍然使用与已存在的GUID相同的GUID。此外,在运行脚本后,系统会询问您是否应重新加载现有管理器。你应该选择(NO),但两种可能的答案都很好 - 包现在使用解决方案中已经存在的包。

  5. 我知道,这有点疯狂,但它对我有用。通过在Id节点中指定GUID,重新创建的项目连接管理器的GUID将设置为已在现有连接管理器文件中设置的值。