可以从命令行 运行 DTSWizard.exe 吗?

Is is possible to run DTSWizard.exe from a command line?

我使用 Visual Studio 构建了一个 SSIS 包,但 运行 需要大约 20 个小时。同时,如果我只使用 SQL 服务器 Import/Export 向导,大约需要一个小时。所以我的问题是 - 是否可以从命令行 运行 DTSWizard.exe?

我的最终目标是自动化数据导入过程,运行每月

SSIS 是一种用于执行提取、转换和加载 (ETL) 操作的工具。

DTSWizard(Import/export 向导)生成一个 SSIS 包。 Visual Studio 还会生成一个 SSIS 包。两者之间最大的区别是 import/export 向导实际上不允许您执行数据类型转换以外的转换。第二个区别是导入导出向导可以在所有版本的 SQL Server 中使用,包括 Express。如果您只安装了 Express Edition,则保存包功能将被禁用。

import/export 向导采用的方法是在数据流中将源添加到目标最多 N(我认为是 5 个)。如果您选择了 N 个以上的源到目的地,那么它会添加更多的数据流任务。凭借这种设计 "pattern",前 N 个转换 运行 同时并行。

如果您发现您设计的包与 DTS 向导发出的包之间的时间增加了 20 倍,那么您的数据流任务可能 运行 是串行的。删除它们之间的先例约束,它们应该 运行 并行并为您净赚 1 小时 运行 时间。

为了直接回答这个问题,他们没有发布 DTSWizard 的参数,但您可以观察到它确实接受了这些参数,因为从 SSMS 启动时,根据您选择的是“导出数据”还是“导入数据”,它会预填source/destination 组件作为 SQL 服务器类型的 OLE DB 连接管理器。

以防万一您认为自己会很聪明,将现有的 DTSWizard.exe 重命名为 _DTSWizard.exe,然后创建一个同名的批处理脚本来写出传递给它的参数捕获 SSMS 的功能,但这会使您的 SSMS 实例崩溃,所以不要那样做。

因此,您可以从命令行启动 DTSWizard.exe,但不能指定源和目标连接管理器以及所有涉及的 tables/files。您遇到的性能差异可能是由于设计造成的,使用向导而不是 "regular" SSIS 没有内在好处。