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

在Automator中以32位模式运行SQL Server Agent作业的方案咨询

绝对可以用PowerShell触发32位的SSIS包执行,这应该是最直接的解决方案,我来给你一步步拆解,同时也提供几个更简便的替代选项:

方案一:PowerShell调用32位SSIS运行器

32位的SSIS执行工具DTExec.exe默认存放在C:\Program Files (x86)\Microsoft SQL Server\XX\DTS\Binn\DTExec.exe,其中XX是你的SQL Server版本号(比如2017对应140,2019对应150,2022对应160,记得替换成自己环境的版本)。

以下是可直接复用的PowerShell脚本示例:

# 替换XX为你的SQL Server版本号,指定32位DTExec路径
$dtExec32Path = "C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\DTExec.exe"

# 定义SSIS包路径:文件系统包用File前缀,SSISDB包用Server前缀
$ssisPackage = "File;C:\ETL\MyExcelTargetPackage.dtsx"
# 如果是SSISDB包,格式为:"Server;localhost\SQLEXPRESS;SSISDB\ETLProjectFolder\MyProject\MyPackage"

# 执行32位DTExec,/X86参数是双重保险(其实调用32位exe本身就会用32位模式)
& $dtExec32Path /F $ssisPackage /X86

# 如需配置变量或连接字符串,可添加参数:
# & $dtExec32Path /F $ssisPackage /Set \Package.Variables[User::ExcelFilePath].Value;"C:\Data\Output.xlsx" /X86

关键注意事项

  • 不需要特意用32位PowerShell运行脚本:只要直接调用32位的DTExec.exe,不管你用64位还是32位PowerShell,都会启动32位进程执行包,完美适配2007-2010 Excel的32位驱动需求。
  • 权限要匹配:运行脚本的账户需要拥有SSIS包的读取权限、Excel目标文件的读写权限,以及SQL Server(如果包关联了数据库)的访问权限,和之前SQL Agent Job使用的权限保持一致即可。
方案二:更简便的批处理文件

如果觉得写PowerShell脚本有点繁琐,直接创建一个批处理文件(.bat)会更省事:

"C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\DTExec.exe" /F "C:\ETL\MyExcelTargetPackage.dtsx" /X86

保存后,直接在Automator里添加"运行Shell脚本"动作,调用这个批处理文件就行,步骤更少。

方案三:SSIS Catalog存储过程(适合已部署到SSISDB的包)

如果你的SSIS包已经部署到SSISDB目录,可以创建一个带32位运行参数的存储过程,然后在Automator里调用它:

CREATE PROCEDURE dbo.RunExcelTargetSSISPackage
AS
BEGIN
    DECLARE @execution_id BIGINT
    -- 创建执行实例,指定@use32bitruntime=1启用32位运行时
    EXEC catalog.create_execution 
        @package_name = N'MyExcelTargetPackage.dtsx',
        @execution_id = @execution_id OUTPUT,
        @folder_name = N'ETLFolder',
        @project_name = N'MyETLProject',
        @use32bitruntime = 1

    -- 如需设置变量,取消注释下面的语句
    -- EXEC catalog.set_execution_parameter_value @execution_id, @object_type = 30, @parameter_name = N'ExcelFilePath', @parameter_value = N'C:\Data\Output.xlsx'

    -- 启动包执行
    EXEC catalog.start_execution @execution_id
END

然后在Automator里用sqlcmd调用这个存储过程:

sqlcmd -S YourSQLInstance -d SSISDB -Q "EXEC dbo.RunExcelTargetSSISPackage"

这个方案的优势是所有包配置都在SSISDB里管理,不用在脚本里硬编码路径,更易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:56:55