我目前正在将数据库从旧的 SQL Server 2012 迁移到运行 SQL Server 2019 的新系统。除了数据库之外,我还迁移了多个 SQL Server 代理作业。 其中一项作业由多个不同的步骤组成,其中一个步骤仅运行 PowerShell 脚本,另外两个步骤作为 SSIS 包实现。当我执行作为 SSIS 包实现的步骤之一时,出现以下错误:
The process could not be created for step 2 of job <long hexadecimal number> (reason: The system cannot find the file specified). The step failed.
我该如何诊断这个错误?我不知道找不到哪个文件以及原因。有没有办法获得有关此错误的任何其他信息?我已经检查了SSIS包中涉及的所有文件,例如包文件本身、配置文件以及在执行该步骤期间访问的所有文件,但我找不到此错误的原因。 由于包是在新的 SQL Server 2019 而不是旧的 SQL Server 2012 中执行的,是否会存在兼容性问题?如果是这样,我如何检查是否确实如此?
提前非常感谢!
有完全相同的问题。 找到了一个解决方法,不喜欢它,但它确实让包运行了。
将“类型”从“SQL Server 集成服务包”更改为“Transact-SQL 脚本 (T-SQL)”
使您的 SQL 语句类似于:
EXEC xp_cmdshell '""C:\Program Files\Microsoft SQL Server\150\DTS\Binn\DTExec.exe" /FILE "\"<Path To Package>\<PackageName>.dtsx\"" /WARNASERROR /X86 /CHECKPOINTING OFF /REPORTING E'
请注意,命令
'""
的开头不是 type-o,\""
包名称后面的 .dtsx
也不是。
不喜欢这个答案,但在正确的解决方案出现之前......它正在起作用。
我们遇到了同样的异常,从作业步骤之一调用 PowerShell 脚本。事实证明,这是一个用双引号替换单引号的简单案例。
这个失败了:
'C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe' C:\Scripts\Deploy.ps1
用双引号替换单引号成功。
"C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" C:\Scripts\Deploy.ps1