【问题标题】:DTExec.exe CheckFile and Validate failsDTExec.exe CheckFile 和 Validate 失败
【发布时间】: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


【解决方案1】:

你错过了包名前面的“-File”(或“-f”)选项

应该是这样的

DTExec.exe -f "<package name with path>" -Validate

请注意,包可能已配置延迟验证,因此 -Validate 选项不会验证具有延迟验证的项目。有一些选项可以强制验证延迟验证的项目,但这是一个单独的主题。

【讨论】:

  • 是的,它现在可以工作了,知道这很愚蠢!我会调查延迟的验证,但谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-24
  • 2013-11-06
  • 1970-01-01
  • 2016-04-12
  • 2014-02-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多