【问题标题】:Executing SSIS Package as SQLAgent Job将 SSIS 包作为 SQLAgent 作业执行
【发布时间】:2011-10-16 19:34:52
【问题描述】:

我有一个 SQL Server 2008 SSIS 作业,它执行一些 Win 32 exe 文件。当我通过 BIDS(在 Windows 2008 机器上)执行作业时,该作业运行良好。现在我已经在 MSDB 数据库中部署了包,并尝试将包作为 SQLAgent 作业执行。

当我这样做时,作业失败并在执行 Win 32 exe 时抛出错误消息。我可以从同一台服务器上的批处理文件运行 exe。但是当 SQLServer 代理作业尝试执行时,它会抛出以下错误

代码:0xC0029151,进程退出代码为“1”,而预期为“0”。 End Error DTExec: 包执行返回 DTSER_FAILURE (1)。

有什么想法吗?

【问题讨论】:

    标签: sql-server sql-server-2008 ssis sql-agent


    【解决方案1】:

    我的假设是服务器是 64 位服务器,是吗?如果是这样,代理将在 64 位模式下运行 SSIS,这会导致与可执行文件不兼容。

    在代理作业中,在执行选项选项卡上,选中“使用 32 位运行时”,应该没问题。

    这个问题被标记为 2008,但如果我没记错的话,2005 SQL Server Integration Services Package 类型的 SQL 代理任务没有在 32 位模式下运行的选项,并且默认情况下一切都在 64 位模式下运行。为了解决这个问题,需要运行一个操作系统命令并调用 32 位 dtexec.exe,它很可能在 C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe 中找到

    【讨论】:

    • 您好@billinkc:感谢您的回复。事实上,我尝试使用 32 位运行时选项,但它没有用。当我直接从 MSDB 数据库运行包时,它执行得很好。我已经将有问题的exe的兼容性设置更改为windows 2000。
    • 在从 BIDS 可以正常工作的开发机器上,尝试从命令行运行包。 C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\DTExec.exe" /file C:\src\package.dtsx 如果您的开发盒不是 64 位,则删除 `(x86)` 部分。调用在您的盒子上是有效还是失败?
    【解决方案2】:

    这也需要在 BIDS 上进行更改。 解决方案资源管理器>右键单击项目属性>配置属性>调试选项>Run64BitRuntime - False

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      相关资源
      最近更新 更多