0

我创建了一个 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>

4

2 回答 2

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. 现在,如果您对该脚本进行 biml,则会创建一个新的项目连接管理器,但它仍然使用与已经存在的 GUID 相同的 GUID。此外,在运行脚本后,系统会询问您是否应该重新加载现有管理器。您应该选择 (NO),但两种可能的答案都很好 - 包现在使用解决方案中已经存在的包。

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

于 2017-08-15T15:04:05.107 回答
1

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

听起来根本问题是您希望拥有create a ado.net connection pointing to a postgresql database我没有的 Biml,但我会根据连接字符串对语法进行尝试

<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 仍处于 Beta 阶段,所以我的经验有好有坏。就个人而言,我会将包最小化为一个连接管理器(全选,删除,另存为 ImportMe.dtsx,然后导入它)。这个想法是需要逆向工程的东西越少,成功的几率就越大。

于 2017-03-26T22:22:04.280 回答