我使用Visual Studio构建了一个SSIS包,但运行大约需要20个小时。同时,如果我只使用SQL Server导入/导出向导,则需要大约一个小时。所以我的问题是 - 是否可以从命令行运行DTSWizard.exe?
我的最终目标是自动化数据导入过程并每月运行
答案 0 :(得分:2)
SSIS是一种用于执行提取,转换和加载(ETL)操作的工具。
DTSWizard(导入/导出向导)生成SSIS包。 Visual Studio还会生成SSIS包。两者之间最大的区别是导入/导出向导实际上不允许您执行超出数据类型转换的转换。第二个区别是导入导出向导可以在所有版本的SQL Server中使用,包括Express。如果您只安装了Express Edition,则将禁用“保存包”功能。
导入/导出向导采用的方法是在数据流中将源添加到目标,最多为N(我认为是5)。如果您为目标选择了多于N个源,则会添加更多数据流任务。凭借这种设计“模式”,那些前N个变换同时并行运行。
如果您设计的软件包与DTS向导发出的软件包之间的时间间隔增加了20倍,那么您的数据流任务可能会以串行方式运行。删除它们之间的先例约束,它们应该并行运行并在1小时的运行时间内净化。
要直接回答这个问题,他们不会发布DTSWizard的参数,但你可以发现它确实接受了它们,因为从SSMS启动时,根据你选择的是导出数据还是导入数据,它会预先填充源/目标组件作为SQL Server类型的OLE DB连接管理器。
如果您认为自己聪明并将现有的DTSWizard.exe重命名为_DTSWizard.exe,然后创建一个具有相同名称的批处理脚本,该脚本会写出传递给它的参数以捕获SSMS的功能但是崩溃您的SSMS实例,所以不要这样做。
因此,您可以从命令行启动DTSWizard.exe,但不能指定源和目标连接管理器+所涉及的所有表/文件。您遇到的性能差异可能是由于设计而使用向导而不是“常规”SSIS没有内在的好处。