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 位模式下运行”的主要内容,如果未能解决你的问题,请参考以下文章