【问题标题】:Unable to run SSIS package using SQL Server Agent Job - Error 0x80040154无法使用 SQL Server 代理作业运行 SSIS 包 - 错误 0x80040154
【发布时间】:2021-03-26 12:15:55
【问题描述】:

我尝试使用 SQL Server 代理作业运行一些 SSIS 包。从 Visual Studio 运行时,该包会毫无问题地执行。但是当我创建一个作业并在 SQL Server 代理中运行时,它会因以下错误而失败。

我已使用我的 Windows 帐户创建了 SSIS 代理和 SSIS 凭据。我正在使用 SQL Server 代理中的代理帐户运行此作业。该软件包位于 D 驱动器中,它对我的​​ windows 帐户具有完全访问权限。但是我无法理解为什么会发生此错误。

我在谷歌中搜索并找到了有关此问题的以下链接。

Microsoft HResults.DTS_E_FAILEDGETTYPEINFO Field

Microsoft DTS Error Codes

但是没有提供解决步骤。谁能帮我解决这个问题?这是因为访问控制吗?

提前致谢。

【问题讨论】:

  • SSIS 包是否使用第 3 方接收器或源?您是否在 SQL Server 上安装了必要的库?您是从 32 位模式下的 Visual Studio 和 64 位模式下的 SQL 代理执行包吗?
  • @AlwaysLearning 不。两者都只是 32BitRuntime。我尝试了一个测试包,其中只有一个执行 sql 任务。它也失败了。
  • @AlwaysLearning。我删除了现有工作并创建了一个新工作,现在它正在工作。

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


【解决方案1】:

当一个包部署在 64 位环境中并且该包正在使用 64 位中不可用的 Microsoft 提供程序(例如 Microsoft JET 提供程序和 Oracle 的 Microsoft 提供程序)时,这是一个非常常见的错误。

分辨率:

  1. 当包作为作业失败时,我们可以提供两种解决方案:

A) 修改失败包的作业步骤,将“类型”更改为操作系统 (cmdExec) 并手动编辑命令行以通过 32 位 DTExec.exe 运行它。您需要在命令之前添加 32 位 DTExec.exe 的完整路径前缀(通常,在默认安装下,路径为 (C:\Program Files (x86)\Microsoft Sql Server\DTS\Binn\DTExec.exe) .

B) 更改注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTS\Setup\DTSPath” 以指向 32 位 DTExec.exe。这样,它将通过这个 32 位 DTExec.exe 调用所有作业。 注意:方法 A) 适用于特定作业,而方法 B) 适用于部署在 Sql Server 中的所有作业。在 SQL Server 2008 中,作业步骤属性页面中有一个选项可以使用 32 位而不是 64 位。但是,在 2005 下,控制它的唯一方法是使用 CmdExec 步骤调用 32 位版本的 DTEXEC。

  1. 在某些情况下,当使用 SSIS API(使用 LoadFromSqlServer()、Execute())通过 .NET 程序执行包时会遇到此错误。在这种情况下,我们需要将项目属性中的目标平台更改为“x86”。

  2. 在某些情况下,连接管理器中使用的提供程序可能会从运行包的系统中丢失。在这种情况下,包的执行将在 BIDS 和 Sql 中都失败,解决方案将是安装适当的提供程序。

来源:https://ssiserror.blogspot.com/2016/06/16class-not-registered-0x80040154.html

【讨论】:

  • 嗨。感谢您的答复。我删除了作业并重新创建了它,这解决了我的问题。
  • 不客气,如果有帮助请采纳,谢谢
猜你喜欢
  • 2021-07-09
  • 2021-12-01
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多