You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS中通过Process Task执行PowerShell脚本遇程序集加载失败

解决SSIS Process Task执行PowerShell脚本的DLL加载格式错误问题

这个问题我之前帮同事排查过,大概率是32位/64位运行环境不匹配导致的——毕竟SSIS和PowerShell默认的运行位数可能不一样,直接跑PowerShell没问题,但在SSIS的Process Task里就踩了位数的坑。下面是具体的解决步骤:

1. 调整Visual Studio调试时的SSIS运行位数

默认情况下,32位的Visual Studio会强制SSIS用32位运行时调试,而大多数系统的PowerShell默认是64位的,这就导致了位数不兼容:

  • 右键你的SSIS项目 → 选择「属性」
  • 切换到「配置属性」→「调试」选项卡
  • 将Run64BitRuntime设置为True,保存后重新调试包

2. 部署到SSISDB时指定64位运行时

如果包是部署到SQL Server的SSIS目录执行,需要在执行配置里明确指定位数:

  • 打开SQL Server Management Studio(SSMS),找到你的SSIS包
  • 右键选择「执行」→ 进入「配置」界面
  • 切换到「高级」选项卡,勾选「使用64位运行时」,再执行包

3. 强制Process Task使用指定位数的PowerShell

如果上面的方法不生效,可以直接在Process Task里指定对应位数的PowerShell路径,避免环境自动选择的问题:

  • 64位PowerShell路径:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • 32位PowerShell路径:C:\Windows\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
  • 在Process Task的「可执行文件」字段填入上面的路径,然后在「参数」里填写脚本执行命令,比如:-File "C:\YourScripts\TargetScript.ps1"

4. 确认目标DLL的位数

最后要验证X.dll本身的位数:

  • 如果DLL是64位编译的,必须确保SSIS和PowerShell都用64位环境运行;如果是32位DLL,就对应32位环境
  • 可以用dumpbin工具(Visual Studio自带的命令行工具)查看DLL信息,执行命令:dumpbin /headers X.dll,在输出里找「machine」字段,x86是32位,x64是64位

小提示:如果脚本里涉及到数据库连接、文件系统访问等,也要确保对应的驱动(比如ODBC、OLE DB)位数和运行环境一致,不然也可能触发类似的加载错误。

内容的提问来源于stack exchange,提问作者Joel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:16:57