首页 文章

BIML重用项目中已存在的连接

提问于
浏览
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>

3 回答

  • 1

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

    这听起来像根本问题是你想要Biml create a ado.net connection pointing to a postgresql database 我不要't have one of those handy but I' d根据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

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

    • 通过查看其代码查找现有项目连接管理器的GUID(不要查看属性页,不显示GUID) .

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

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

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

  • 0

    感谢您的回答 . 我试图获得一个与Postgre数据库连接的连接,但我无法...仍然失败奇怪的是,我有它与SSIS一起使用但无法通过BIML脚本获取它 . 你们有些人知道问题在哪里吗?

    谢谢您的帮助 .

相关问题