我已经使用SQL Server Management Studio创建了SSIS包。它的工作。
但我想要做的是在运行时将Source连接字符串和Destination连接字符串传递给此SSIS包。
我计划的一种方法是从dtexec工具运行此包。 还有其他选择吗?
答案 0 :(得分:2)
SSIS,通过导入导出向导,可在所有版本的SQL Server中使用。但是,SQL Server Express不允许您保存使用向导生成的包。保存的包装是我们将要操作的。
您已正确识别可以更改SSIS包中的连接字符串。未来的读者,连接字符串不指定表或模式,名称。如果要使对象名称动态化,则无法使用“导入/导出向导”构建的包完成此操作。
我们已经确定已将包保存在导入/导出向导之外,尽管使用BIDS / SSDT-BI构建的包同样有效。运行包的机制通常通过dtexec utility执行。除此之外,它还允许您为Connections
指定新值/ Conn [ection] id_or_name; connection_string [[; id_or_name; connection_string] ...] :(可选)。指定具有指定名称或GUID的连接管理器位于包中,并指定连接字符串。
此选项要求指定两个参数:必须在id_or_name参数中提供连接管理器名称或GUID,并且必须在connection_string参数中指定有效的连接字符串。
打开您喜欢的文本编辑器并将其指向您保存的包。
<DTS:ConnectionManagers>
<DTS:ConnectionManager
DTS:refId="Package.ConnectionManagers[DestinationConnectionOLEDB]"
DTS:CreationName="OLEDB"
DTS:DTSID="{6D24E79D-7912-4CB2-88E1-D85A37C21ECF}"
DTS:ObjectName="DestinationConnectionOLEDB">
<DTS:ObjectData>
<DTS:ConnectionManager
DTS:ConnectionString="Data Source=.\dev2014;Initial Catalog=master;Provider=SQLNCLI11;Integrated Security=SSPI;Auto Translate=false;" />
</DTS:ObjectData>
</DTS:ConnectionManager>
<DTS:ConnectionManager
DTS:refId="Package.ConnectionManagers[SourceConnectionOLEDB]"
DTS:CreationName="OLEDB"
DTS:DTSID="{A9768F28-28F6-4E61-8717-24B39DB0BE77}"
DTS:ObjectName="SourceConnectionOLEDB">
<DTS:ObjectData>
<DTS:ConnectionManager
DTS:ConnectionString="Data Source=AVATHAR\DEV2014;Initial Catalog=PHOENIX;Provider=SQLNCLI11;Integrated Security=SSPI;Auto Translate=false;" />
</DTS:ObjectData>
</DTS:ConnectionManager>
</DTS:ConnectionManagers>
这会导致像
这样的调用dtexec /file C:\ssis\pkg1.dtsx /conn "SourceConnectionOLEDB";"\"Data Source=localhost\TestSQL2008R2;Initial Catalog=ConnDB;Integrated Security=SSPI;\"