我创建了一个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>
答案 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项目连接管理器:
通过查看代码来查找现有项目连接管理器的GUID(不要查看属性页面,那里不显示GUID)。
在BIML脚本中重新创建主BIML节点下的同一项目连接管理器。我将此连接称为“假项目连接管理器”。使用与现有连接字符串相同的连接字符串。
<Biml>
<Connections>
<Connection Name="EXISTING_CONMANAGER" CreateInProject="true" ConnectionString="Data Source=....;" />
</Connections>
在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>
现在,如果您修改此脚本,则会创建一个新的项目连接管理器,但它仍然使用与已存在的GUID相同的GUID。此外,在运行脚本后,系统会询问您是否应重新加载现有管理器。你应该选择(NO),但两种可能的答案都很好 - 包现在使用解决方案中已经存在的包。
我知道,这有点疯狂,但它对我有用。通过在Id节点中指定GUID,重新创建的项目连接管理器的GUID将设置为已在现有连接管理器文件中设置的值。