如何在x64机器上使用32位dtexec解决加载SSIS包的错误?

时间:2022-03-22 16:33:54

I have Integration Services packages that need to work with Excel files (shudder) and also need to execute on x64. I have a handle on the whole SSIS x64 vs. 32-bit issue, so I am scheduling these problem-child packages using MS suggested technique of using SQL Agent job step type Operating System / CMDExec, with a command line string that explicitly calls the 32-bit dtexec. So far so good.

我有需要使用Excel文件(颤抖)的Integration Services包,还需要在x64上执行。我有一个关于整个SSIS x64与32位问题的句柄,所以我使用MS建议的技术使用SQL代理作业步骤类型操作系统/ CMDExec来安排这些问题子包,其中命令行字符串显式调用32位dtexec。到现在为止还挺好。

Here's the issue: the packages still fail to load, and complain about failing to load not the Excel bits, but instead my handy Log Provider that logs to SQL Server. This is the error message, edited for object names:

这是问题:软件包仍然无法加载,并抱怨无法加载Excel位,而是我的方便日志提供程序登录到SQL Server。这是针对对象名称编辑的错误消息:

Started: 2:33:01 PM
Error: 2009-07-24 14:33:06.51
Code: 0xC0010018
Source:
Description:

开始时间:下午2:33:01错误:2009-07-24 14:33:06.51代码:0xC0010018来源:描述:

Error loading value "<DTS:ConnectionManager xmlns:DTS="www.microsoft.com/SqlServer/Dts"><DTS:Property DTS:Name="DelayValidation">0</DTS:Property><DTS:Property DTS:Name="ObjectName">My_LogCon</DTS:Property><DTS:Property DTS:Name="DTSID">{86320FE6-AEFD-4A58-9277-84685B9B9" from node "DTS:ConnectionManager".
End Error Could not load package "c:\folder\mypkg.dtsx" because of error 0xC0010014.
Description: The package failed to load due to error 0xC0010014 "One or more error occurred. There should be more specific errors preceding this one that explains the details of the errors. This message is used as a return value from functions that encounter errors.". This occurs when CPackage::LoadFromXML fails. ... Process Exit Code 5. The step failed.

加载值时出错“ 0 My_LogCon {86320FE6-AEFD-4A58-9277-84685B9B9“来自节点”DTS:ConnectionManager“。结束错误由于错误0xC0010014,无法加载包“c:\ folder \ mypkg.dtsx”。说明:由于错误0xC0010014导致程序包无法加载“发生了一个或多个错误。在此之前应该有更多特定错误来解释错误的详细信息。此消息用作遇到错误的函数的返回值。” 。当CPackage :: LoadFromXML失败时会发生这种情况。 ...处理退出代码5.步骤失败。 属性dts:名称=“dtsid”> 属性dts:名称=“objectname”> 属性dts:名称=”delayvalidation“>

The packages run perfectly in 32-bit Visual Studio/debug. Anyone seen this type of thing?

这些包在32位Visual Studio / debug中运行完美。谁见过这种东西?

2 个解决方案

#1


From the 70-488 book:

从70-488书:

Dtexec, dtutil, and the SQL Server Import and Export Wizard have both a 64-bit and a 32-bit application. Be sure to note that if you develop a package in a 32-bit environment and want to run the package in a 64-bit environment, the connection managers need to be 64-bit compliant. Some connection managers such as Excel work in a 32-bit environment only.

Dtexec,dtutil和SQL Server导入和导出向导都有64位和32位应用程序。请务必注意,如果您在32位环境中开发包并希望在64位环境中运行该包,则连接管理器需要符合64位。某些连接管理器(如Excel)仅在32位环境中工作。

#2


I do not think this is Excel related. Your error message clearly states:

我不认为这与Excel有关。您的错误消息明确指出:

Could not load package "c:\folder\mypkg.dtsx"

More detailed error message might help. Also curious to know, are there a lot of processes after the Excel file loads? I am faced with the same scenario and it is shame having to run the whole process in 32 bit.

更详细的错误消息可能有所帮助也很奇怪,Excel文件加载后有很多进程吗?我面临着同样的情况,不得不以32位运行整个过程。

I might have a work around that will allow you to use Excel files as source, but still configure it to run as a SSIS job, not CmdExec. Will share details once I test this.

我可能有一个解决方法,允许您使用Excel文件作为源,但仍然将其配置为作为SSIS作业运行,而不是CmdExec。我会在测试后分享细节。

Check the following Microsoft knowledge base article. There seems to be a different reason for your issue.

请查看以下Microsoft知识库文章。您的问题似乎有不同的原因。

You receive an error message when you try to load an SSIS package that contains a DateTime type variable in SQL Server 2005

当您尝试在SQL Server 2005中加载包含DateTime类型变量的SSIS包时收到错误消息

#1


From the 70-488 book:

从70-488书:

Dtexec, dtutil, and the SQL Server Import and Export Wizard have both a 64-bit and a 32-bit application. Be sure to note that if you develop a package in a 32-bit environment and want to run the package in a 64-bit environment, the connection managers need to be 64-bit compliant. Some connection managers such as Excel work in a 32-bit environment only.

Dtexec,dtutil和SQL Server导入和导出向导都有64位和32位应用程序。请务必注意,如果您在32位环境中开发包并希望在64位环境中运行该包,则连接管理器需要符合64位。某些连接管理器(如Excel)仅在32位环境中工作。

#2


I do not think this is Excel related. Your error message clearly states:

我不认为这与Excel有关。您的错误消息明确指出:

Could not load package "c:\folder\mypkg.dtsx"

More detailed error message might help. Also curious to know, are there a lot of processes after the Excel file loads? I am faced with the same scenario and it is shame having to run the whole process in 32 bit.

更详细的错误消息可能有所帮助也很奇怪,Excel文件加载后有很多进程吗?我面临着同样的情况,不得不以32位运行整个过程。

I might have a work around that will allow you to use Excel files as source, but still configure it to run as a SSIS job, not CmdExec. Will share details once I test this.

我可能有一个解决方法,允许您使用Excel文件作为源,但仍然将其配置为作为SSIS作业运行,而不是CmdExec。我会在测试后分享细节。

Check the following Microsoft knowledge base article. There seems to be a different reason for your issue.

请查看以下Microsoft知识库文章。您的问题似乎有不同的原因。

You receive an error message when you try to load an SSIS package that contains a DateTime type variable in SQL Server 2005

当您尝试在SQL Server 2005中加载包含DateTime类型变量的SSIS包时收到错误消息