参数化和执行SSIS DSTX以进行数据导入

时间:2017-06-21 16:47:43

标签: sql-server ssis

我想使用SSIS在两个SQL Server数据库之间传输大量数据。 如何参数化SQL Server的输出"导入数据"向导并执行它以在其他环境中运行?

在SQL Server中,我右键单击目标数据库并单击"导入数据"然后通过向导选择"保存SSIS包"。这工作正常并生成.dstx文件,以便在我运行向导的服务器上的特定数据库之间进行传输。现在,我想自定义.dstx,以便参数化数据源以及能够在其他环境中运行的源和目标数据库。然后,我希望能够从命令行执行.dstx包。我对这两个步骤都很挣扎,因为我对SSIS几乎一无所知,但我怀疑这应该是一件容易的事情。

此外,尝试运行" dtexec.exe"从命令行抛出一个错误,关于版本3无法运行版本8或某些此类(在XML内部将PackageFormatVersion设置为8)?

在不需要在Visual Studio中创建SSIS项目的情况下,最好的方法是什么?我想直接更新XML并调用EXE能够执行的任何内容并接受连接字符串的参数或连接字符串中的各个变量。我能够成功双击.dstx文件并使用GUI运行它,但我希望能够从命令行执行相同的操作,而无需创建SQL代理作业。

这里是.dstx文件中需要参数化的XML节点。

<DTS:ConnectionManagers>
<DTS:ConnectionManager
  DTS:refId="Package.ConnectionManagers[DestinationConnectionOLEDB]"
  DTS:CreationName="OLEDB"
  DTS:DTSID="{72C15889-EC1F-4BFA-A704-7562C68B2463}"
  DTS:ObjectName="DestinationConnectionOLEDB">
  <DTS:ObjectData>
    <DTS:ConnectionManager
      DTS:ConnectionString="Data Source=localhost;Initial Catalog=DestinationDatabase;Provider=SQLNCLI11;Integrated Security=SSPI;Auto Translate=false;" />
  </DTS:ObjectData>
</DTS:ConnectionManager>
<DTS:ConnectionManager
  DTS:refId="Package.ConnectionManagers[SourceConnectionOLEDB]"
  DTS:CreationName="OLEDB"
  DTS:DTSID="{B1415B25-61D6-4202-9BC6-CA59B358B766}"
  DTS:ObjectName="SourceConnectionOLEDB">
  <DTS:ObjectData>
    <DTS:ConnectionManager
      DTS:ConnectionString="Data Source=localhost;Initial Catalog=SourceDatabase;Provider=SQLNCLI11;Integrated Security=SSPI;Auto Translate=false;" />
  </DTS:ObjectData>
</DTS:ConnectionManager>
</DTS:ConnectionManagers>

1 个答案:

答案 0 :(得分:2)

  

我对SSIS几乎一无所知,但我怀疑这应该是   这是一件容易的事。

抱歉,这不是一件容易的事。在SSIS中为多个环境参数化连接的方式是使用配置文件和包变量,到目前为止,最简单的方法是使用Visual Studio中的项目。

如果由于某种原因无法使用Visual Studio,可以直接在文本编辑器中编辑软件包的xmla,但是好运找到解释如何操作的教程,或者知道如何处理副手的人,然后祝你好运并调试它。也许您可以查看使用配置的包的xmla,并将其用作模型(如果有的话)。