【发布时间】:2016-08-11 23:29:13
【问题描述】:
我正在尝试使用 DTExec.exe 作为批处理过程的一部分来执行 dtsx 脚本。以下命令行脚本有效:
"C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTExec.exe" -File "\\\\vm-to-somewhere\d$\Projects\test.dtsx"
但是,如果我在实际运行脚本之前尝试对 test.dtsx 文件运行检查/验证,则会失败,退出代码为 6(转换为:实用程序遇到语法或语义错误的内部错误在命令行中)。
$ "C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTExec.exe" -CheckFile "\\\\vm-to-somewhere\d$\Projects\test.dtsx"
$ "C:\Program Files\Microsoft SQL Server\130\DTS\Binn\DTExec.exe" -Validate "\\\\vm-to-somewhere\d$\Projects\test.dtsx"
Returns: Option "\\\\vm-to-somewhere\d$\Projects\test.dtsx" is not valid.
这可能只是我忽略的一个简单错误,我想知道它是否与反斜杠有关,但第一个命令运行良好,因此没有意义。
另外,如果有人可以向我指出 -CheckFile 和 -Validate 之间的区别,那可能会帮助我决定在我的脚本中使用哪个。我只需要在执行之前知道 dtsx 是否工作正常,因为它需要 3 小时才能运行,而且我更愿意尽早发现。
参考:https://msdn.microsoft.com/en-us/library/hh231187(v=sql.110).aspx
【问题讨论】:
-
CheckFile不检查 dtsx 文件。它设置检查点文件的路径,您可以使用它来重新启动包(这对于三个小时的包可能很方便)。但只有在您的包中专门内置了检查点逻辑时,它才有用。我猜你没有,所以不要打扰它。您可以使用程序 DTExecUI.exe 从 GUI 为您构建命令行。如果您的包存在实际验证问题,则很可能会在执行的第一分钟内抛出。
标签: sql-server sql-server-2012 command-line-arguments exit-code dtexec