【发布时间】:2017-06-21 16:47:43
【问题描述】:
我想使用 SSIS 在 2 个 SQL Server 数据库之间传输一大堆数据。 如何参数化 SQL Server“导入数据”向导的输出并执行它以在其他环境中运行?
在 SQL Server 中,我右键单击目标数据库并单击“导入数据”并通过向导并选择“保存 SSIS 包”选项。这工作得很好,并生成了一个 .dstx 文件来在我运行向导的服务器上的特定数据库之间进行传输。现在我想自定义 .dstx 以参数化数据源以及源和目标数据库,以便能够在其他环境中运行。然后我希望能够从命令行执行 .dstx 包。由于我对 SSIS 几乎一无所知,所以我在这两个步骤中都在苦苦挣扎,但我怀疑这应该是一件容易的事。
另外,尝试从命令行运行“dtexec.exe”会引发关于版本 3 无法运行版本 8 或类似的错误(PackageFormatVersion 在 XML 中设置为 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>
【问题讨论】:
标签: sql-server ssis