传递从SSMS的导出/导入向导创建的SSIS包的源和目标

时间:2016-04-19 22:14:10

标签: sql-server ssis

我已经使用SQL Server Management Studio创建了SSIS包。它的工作。

但我想要做的是在运行时将Source连接字符串和Destination连接字符串传递给此SSIS包。

我计划的一种方法是从dtexec工具运行此包。 还有其他选择吗?

1 个答案:

答案 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;\"