SSIS 包失败并出现错误“如果未安装 64 位驱动程序,请在 32 位模式下运行”

Posted

技术标签:

【中文标题】SSIS 包失败并出现错误“如果未安装 64 位驱动程序,请在 32 位模式下运行”【英文标题】:SSIS package fails with error "If 64-bit driver not installed, run in 32-bit mode" 【发布时间】:2017-03-29 13:48:08 【问题描述】:

尝试从 SSMS 中的集成服务目录运行包时,我收到以下错误。我将64BitRuntime 选项更改为FALSE,但它仍然不起作用。下面的错误之后是无法连接到我的Excel connection manager 的错误。有什么建议吗?

包错误:请求的 OLE DB 提供程序 Microsoft.Jet.OLEDB 4.0 未注册。如果未安装 64 位驱动程序,请运行 以 32 位模式封装。错误代码:0x00000000

【问题讨论】:

只是为了验证,向项目中添加一个新包,这将使您是否是 running in 32 or 64 bit mode 变得非常明显 感谢您的链接,但我不得不承认它并不是非常明显。我不确定添加新包会告诉我什么。我在重新创建我的包吗?对不起,我不关注。我也没有指出我在部署模型中运行它,它在 Visual Studio 中运行良好。 抱歉,茶还没有开始。是的,您明确指出 trying to run the package from the Integration Services catalog in SSMS 从 SSMS 运行它有几种不同的方式。您是连接到集成服务目录 (2012+) 还是使用 SSMS 连接类型 Integration Services 集成服务目录 (2012+) 【参考方案1】:

如果您从作业执行 SSIS 包,作业配置中有一个选项“启用 32 位”复选框。

如果您从 BIDS 或 SSDT 执行 SSIS 包,请转到项目属性=> 配置 => 调试 => 将 64BitRuntime 从“True”变为“False”,因为它默认设置为 True。

【讨论】:

没有从作业中运行。当我从目录中执行它时失败。它在 SSDT 中运行良好。 试过上面的第二个选项了吗?尝试在解决方案的项目属性中将 64BitRuntime 从 True 变为 False 告诉我您正在为 sql server 32/64 使用哪个架构版本?部署包的位置 是的 - 你可以在我对上面哈迪帖子的回复中看到发生了什么。 在 Visual Studio 2019 中,“64BitRuntime”选项位于“解决方案属性”对话框中,正在调试中。【参考方案2】:

您必须安装 Microsoft Access Database Engine 2010 Redistributable 和 将64BitRuntime 选项设置为FALSE

您可以从以下链接获取:

https://www.microsoft.com/en-us/download/details.aspx?id=13255

更多信息和细节可以在以下链接中找到:

http://sqlblog.com/blogs/john_paul_cook/archive/2010/03/24/running-32-bit-ssis-in-a-64-bit-environment.aspx http://toddmcdermid.blogspot.com/2009/10/quick-reference-ssis-in-32-and-64-bits.html?m=1 https://msdn.microsoft.com/en-us/library/ms162810.aspx

【讨论】:

它已安装,我将选项设置为 false。 另外,当我从目录执行包时,我不是在服务器上运行它吗?我可以毫无问题地从 SSDT 运行包。 @Scottdg 我在回答中提供了新链接。你可以检查它们。我想这就是你要找的东西 第一个很有用 sqlblog.com/blogs/john_paul_cook/archive/2010/03/24/…【参考方案3】:

您正在尝试从 SSISDB 目录运行 SSIS 包,并且需要它处于 32 位模式。

这样的 TSQL 如下所示

DECLARE @execution_id bigint;
EXEC SSISDB.catalog.create_execution
    @package_name = N'Legacy_DataExport.dtsx'
,   @execution_id = @execution_id OUTPUT
,   @folder_name = N'Legacy_DataExport'
,   @project_name = N'Legacy_DataExport'
,   @use32bitruntime = True
,   @reference_id = NULL;
SELECT
    @execution_id;
DECLARE @var0 smallint = 1;
EXEC SSISDB.catalog.set_execution_parameter_value
    @execution_id
,   @object_type = 50
,   @parameter_name = N'LOGGING_LEVEL'
,   @parameter_value = @var0;
EXEC SSISDB.catalog.start_execution @execution_id;
GO

值得注意的是我们指定@use32bitruntime = True的第一个EXEC的倒数第二个参数

也就是说,请使用 32 位运行时运行包 Legacy_DataExport.dtsx,该包可以在项目 Legacy_DataExport 中找到,该项目可以在文件夹 Legacy_DataExport 中找到。

从 UI 的角度来看,它看起来像

SSMS 中的点击路径是

展开“管理”下的“集成服务目录”节点 展开“SSISDB”的唯一选项 展开您的项目所在的文件夹 - 在我的例子中是“Legacy_DataExport” 展开“项目”节点 扩展您的实际项目节点 - 我的项目也称为“Legacy_DataExport” 展开“包” 找到你的包,我的例子是“Legacy_DataExport.dtsx”,右键单击它并选择Execute...

【讨论】:

仅供参考,他在 SSMS 中右键单击 SSISDB 中的包以获取该 GUI 窗口 @DanielL.VanDenBosch 好点,我的回答假设了运行包的熟练程度。您是否找到了我的编辑地址,或者我是否需要添加更多详细信息? 是的,那太棒了。【参考方案4】:

使用 SSIS 中内置的 excel 连接管理器,包需要在 32 位模式下运行。切换这个:

64BitRuntime 选项为 FALSE

仅允许 SSDT 在 32 位模式下运行包,但不会影响部署后的运行方式。要从 SSMS 以 32 位模式运行它:

如果您右键单击集成服务目录中的包并点击执行,请转到对话框的高级选项卡并检查 32 位运行时。 如果您通过 SQL 代理作业执行它。在该步骤中,转到配置 > 高级并检查 32 位运行时。

【讨论】:

以上是关于SSIS 包失败并出现错误“如果未安装 64 位驱动程序,请在 32 位模式下运行”的主要内容,如果未能解决你的问题,请参考以下文章

从 SSIS 调用时删除语句失败

继续处理 SSIS 中的某些特定错误

从 SQL 代理运行时 SSIS 脚本任务失败

SSIS部署:SQL Server部署中的SSIS包运行时错误

即使输入数据错误,SSIS 包也不会失败

SSIS 包需要很长时间或最终失败