抱歉,如果这已得到解答,但我无法找到解决我问题的答案。我有一个 SSIS 包,它有一个脚本任务,它引用:
C:\Program Files (x86)\Common Files\microsoft shared\OFFICE16\MSO.DLL。
通过 SQL Server Data Tools 执行时,包按预期运行。
当部署到集成服务目录并手动执行时,包会按预期运行。然后启用 xp_cmdshell。
使用命令执行包时:
DECLARE @returncode INT;
EXEC @returncode = xp_cmdshell 'DTEXEC /ISSERVER "\SSISD
\test\test_DW_ETL\test_script_task.dtsx"'
它失败并显示错误消息
无法创建 ActiveX 组件
当另一个 SSIS 包(在脚本任务中没有 Microsoft 对象引用)使用相同的 DTEXEC 命令执行时,它运行成功。
使用命令执行脚本任务包时:
DECLARE @returncode INT; EXEC @returncode = xp_cmdshell '@"C:\Program
Files\Microsoft SQL Server\120\DTS\Binn\DTExec.exe" /ISSERVER "\SSISDB
\test\test_DW_ETL\test_script_task.dtsx"'
要使用 32 位 DTEXEC,包也会失败并显示错误消息
无法创建 ActiveX 组件
我尝试使用本地系统、本地服务、网络服务、我自己的帐户和服务帐户来更改执行 SQL Server 的帐户——这些帐户似乎都没有任何区别。
我怀疑 DTEXEC 无法访问 mso.dll。
这一定是一种很常见的方法,所以我想我一定错过了一个相当明显的步骤。任何人都可以提供任何帮助吗?
谢谢,
伊恩