使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

Microsoft 将分发 Microsoft SQL Server 2005 中,Microsoft SQL Server 2008 中,和作为一个可下载文件的 Microsoft SQL Server 2008 R2 修正。修补程序是累积性的因为每个新版本包含的所有修补程序和以前的 SQL Server 2005,Microsoft SQL Server 2008 中或 SQL Server 2008 R2 附带的所有安全修补程序的修补都程序版本。

症状

请考虑以下情形:

  • 您有一个下面的.NET Framework 安装的计算机上运行 Microsoft SQL Server 2005年,Microsoft SQL Server 2008 中或 SQL Server 2008 R2 集成服务包 (SSI):

    • .NET Framework 2.0 Service Pack 2 (SP2)

    • .NET Framework 3.5 Service Pack 1 (SP1)

  • SSIS 包使用字符数据导入的第三方 ODBC 驱动程序。

但是,运行的 SSIS 包时,您会收到以下错误消息︰

[ADO 净源 [1424]]错误︰ SSIS 错误代码 DTS_E_INDUCEDTRANSFORMFAILUREONERROR。"组件"ADO 净源"(1424)"失败,因为出现错误代码 0x80131937,并指定"输出列"列名称"(编号)"错误行处置故障错误。指定组件的指定对象时出错。可能在这之前发布有关失败的详细信息的错误消息。

错误 0xc0209029︰ 数据流任务:"组件"组件"(1)"失败,因为出现了错误代码 0x80131937...

[ADO 净源 [1424]]错误︰ 该组件"ADO 净源"(1424) 无法处理的数据。管道组件的方法调用返回 HRESULT 错误代码 0xC0209029。

[SSIS。管道] 错误︰ SSIS 错误代码 DTS_E_PRIMEOUTPUTFAILED。组件"ADO 净源"(1424) 返回的错误代码 0xC02090F5 PrimeOutput 方法。管线引擎调用 PrimeOutput() 时,该组件返回了失败代码。故障代码的含义由该组件,但是致命错误和管道已停止执行。可能在这之前发布有关失败的详细信息的错误消息。

此问题会影响满足以下条件时,均通过 ODBC 托管的提供程序的 ODBC 驱动程序︰

  • 由CommandBehavior.SequentialAccess参数调用ExecuteReader函数。 在下列情况下使用此调用和参数︰

    • 当 SQL 服务器 2005 SSIS 包读取数据,从 DataReader 源文件中或在 SQL Server 2008 SSIS 包从托管 ADO.NET 数据源读取数据时。

    • 数据源未配置重定向的错误和截断值。

  • 将调用OdbcDataReader.IsDbNull函数。SSIS 包使用此方法来确定字段中的值是否为 NULL。

  • 调用以下函数之一︰

    • 调用OdbcDataReader.GetBytes函数来从 ODBC 托管的提供程序获取特定的数据类型,如 DT_BYTES。

    • OdbcDataReader.GetChars函数调用 ODBC 托管提供程序中获取某些字符串数据类型,如截断。

原因

.NET Framework 2.0 SP2 和.NET Framework 3.5 SP1 引入托管 ODBC 提供程序的字符串读取本机的 ODBC 驱动程序在"症状"一节中描述的方案中的更改。由于此更改,使用SQLGetData API 函数调用本机的 ODBC 驱动程序中托管的 ODBC 提供程序使用的缓冲区的大小为 0。兼容的 ODBC 驱动程序在此调用中没有问题。但是,不符合标准的 ODBC 驱动程序可能会在以下情况下失败。对于兼容的 ODBC 驱动程序, SQLGetData API 函数返回检测到 SUCCESS_WITH_INFO 时缓冲区的大小为 0。对于一个不兼容的 ODBC 驱动程序,调用返回 NO_DATA。

解决方案

修补程序信息

可以从 Microsoft 获得受支持的修复程序。然而,此修补程序仅用于解决本文中描述的问题。仅对出现这一特定问题的系统应用此修补程序。此修补程序可能会接受进一步的测试。因此,如果这个问题没有对您造成严重的影响,我们建议您等待包含此修复程序的下一个软件更新。

如果此修复程序可供下载,则在此知识库文章的顶部会出现“修补程序下载可用”部分。如果未显示此部分,请与 Microsoft 客户服务和支持部门联系以获取此修复程序。

注意:如果出现其他问题或需要任何故障诊断时,您可能需要创建单独的服务请求。对于不符合此特定的修补程序的其他支持问题和事项将照常收取费用。有关 Microsoft 客户服务和支持电话号码或创建单独的服务请求的完整列表,请访问下面的 Microsoft 网站︰

http://support.microsoft.com/contactus/?ws=support注意:"提供修补程序下载"窗体显示获取此修复程序的语言。如果看不到您的语言,则修补程序没有那种语言的版本。

系统必备组件

您必须安装.NET Framework 2.0 Service Pack 2。

重新启动信息

应用此修补程序后,不需要重新启动计算机。

注册表信息

您不需要更改注册表。

修补程序文件信息

此修补程序仅包含解决本文列出的问题所需的那些文件。此修复程序可能不包含的所有文件,您必须将产品完全更新到最新版本。此修补程序的英文版具有的文件属性 (或更新的文件属性) 在下表中列出。日期和为这些文件的时间以协调世界时 (UTC) 列出。当您查看文件信息时,它将转换为本地时间。要了解 UTC 与本地时间之间的时差,使用控制面板中的日期和时间项中时区选项卡。

对于 Windows 2000,Windows Server 2003 中,Windows XP 中,32 位版本的.NET Framework 2.0

文件名称

文件版本

文件大小

日期

时间

平台

System.data.dll

2.0.50727.4063

2,933,760

19-

05:08

x86

对于 Windows 2000,Windows Server 2003 中,Windows XP,x64 的.NET Framework 2.0 版本

文件名称

文件版本

文件大小

日期

时间

平台

System.data.dll

2.0.50727.4063

3,008,512

18-

23:51

x64

System.data.dll

2.0.50727.4063

2,933,760

19-

05:08

x86

对于 Windows 2000,Windows Server 2003 中,Windows XP,IA-64 版本的.NET Framework 2.0

文件名称

文件版本

文件大小

日期

时间

平台

System.data.dll

2.0.50727.4063

2,933,760

19-

05:08

x86

System.data.dll

2.0.50727.4063

3,234,816

19-

01:09

IA-64

对于 Windows Vista 中,Windows Server 2008 中,32 位版本的.NET Framework 2.0

文件名称

文件版本

文件大小

日期

时间

System.data.dll

2.0.50727.4400

2,933,760

10-Sep-2009

11:54

对于 Windows Vista 中,Windows Server 2008,x64 版本的.NET Framework 2.0

文件名称

文件版本

文件大小

日期

时间

System.data.dll

2.0.50727.4400

3,008,512

10-Sep-2009

11:54

对于 Windows Vista 中,Windows Server 2008 中,IA-64 版本的.NET Framework 2.0

文件名称

文件版本

文件大小

日期

时间

System.data.dll

2.0.50727.4400

3,234,816

10-Sep-2009

11:54

解决方法

若要变通解决此问题,请使用下列方法之一。

方法 1

编辑配置错误和截断重定向或托管 ADO.NET 数据源上的 DataReader 源的 SSIS 包。编辑错误输出重定向到目标位置的 SSIS 包后,即使没有行写入该目标包将成功运行。若要执行此操作,请执行以下步骤。

注意:以下步骤假定您使用 DataReader 从源中读取数据的 SQL 服务器 2005 SSIS 包。

  1. 在 SQL Server 商业智能开发 Studio 中打开 SSIS 包。

  2. 在数据流设计器中打开高级 DataReader 源编辑器对话框。

  3. 单击输入和输出属性选项卡,然后展开DataReader 输出节点在树中的输入和输出

  4. 展开节点输出列

  5. 输出列节点下,单击每一列,然后查看数据类型属性。每个列属性的数据类型是字符串,但此,DT_BYTES 或正确,请编辑以下两个属性︰

    • 将ErrorRowDisposition属性设置为RD_RedirectRow。

    • 将TruncationRowDisposition属性设置为RD_RedirectRow。

  6. 单击确定以保存所做的更改。

  7. 数据流设计器中添加一个新的目标。例如,添加平面文件目标或 SQL Server 目标。

  8. 使用 DataReader 来源的红色箭头将它连接到新添加的目标。此操作将直接的错误行和到目的地的截断行以保存错误行。

  9. 所有数据流任务与"症状"一节中提到的错误消息未通过访问 ODBC 的字符串或图像列,重复步骤 1 到 8。

方法 2

.NET Framework 2.0 SP2 或.NET Framework 3.5 SP1 卸载。但是,我们不建议您卸载服务包,因为此牺牲可靠性、 功能改进和性能优化,提供了服务包。



若要将系统还原到安装.NET Framework 2.0 SP2 或.NET Framework 3.5 SP1 之前的状态,请执行以下步骤︰

  1. 在控制面板中,双击添加或删除程序

  2. 查找 Microsoft.NET Framework 3.5 SP1,然后又卸载它。

  3. 查找 Microsoft.NET Framework 3.0 SP2,然后将其卸载。

  4. 查找 Microsoft.NET Framework 2.0 SP2,然后将其卸载。

  5. 重新安装.NET Framework 3.5 的原始版本。.NET Framework 2.0 SP1 和.NET Framework 3.0 SP1,则此步骤将重新安装。若要获取.NET Framework 3.5,请访问下面的 Microsoft 网站︰

    http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&displaylang=en

方法 3

第三方的 ODBC 驱动程序供应商联系,以确定供应商是否有更新的驱动程序以解决此问题,请与联系。

状态

Microsoft 已经确认这是“适用于”一节中列出的 Microsoft 产品中的问题。

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×