PRB: 将数据从 Jet 4.0LEDB 源传送失败,出现缓冲区溢出错误

文章翻译 文章翻译
文章编号: 281517 - 查看本文应用于的产品
展开全部 | 关闭全部

本文内容

症状

当使用数据转换服务 (DTS) 和 Microsoft OLE DB 提供程序的 Jet 导数据入 Jet OLEDB 4.0 数据源中数据抽取任务可能会失败并显示以下错误消息:
"行号 9.为止,在该任务中遇到错误的源位置的错误: 1"
常规错误:-2147217887(80040E21)
数据源列 3('Col3') 已对指定的缓冲区大小来说太大。
如果源中的字段超过 255 个字符的这些字段的目的数据可能会截断为 255 个字符。DTS 有一个包含 255 个以上字符的第一个行上无法正常工作。若要进行此验证查找错误消息中显示的行号。

原因

Jet OLE DB 提供程序读取注册表项,以决定要猜出该类型的源列中读取行的数目。该注册表项设置时:

HKLM\Software\Microsoft\Jet\4.0\Engines\Excel\TypeGuessRows

默认状态下,该关键字的值为 8。因此,该提供程序会扫描源数据以确定数据类型为列中的前 8 行。如果任何字段如下所示的文本和长度的数据超过 255 个字符,列的类型为备注字段。因此如果没有数据,长度大于 255 个字符的源中的前 8 行,Jet 无法准确地确定在数据类型的性质。

替代方法

重要此部分中,方法或任务包含说明如何修改注册表的步骤。但是,如果注册表修改不当可能会出现严重的问题。因此,请务必认真执行这些步骤。已添加的保护注册表之前备份您对其进行修改。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756如何备份和还原在 Windows 注册表

若要更改的值TypeGuessRows使用下列步骤:
  1. 在该启动菜单,单击运行.在该运行对话框中键入Regedt32然后单击"确定".
  2. 在注册表编辑器中打开以下项:

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

    请注意对于 64 位系统相应的键的是,如下所示:

    HKLM\SOFTWARE\wow6432node\microsoft\jet\4.0\engines\excel
  3. 双击"TypeGuessRows.
  4. 在该DWORD 编辑器对话框中,单击十进制在"下,.键入一个介于 0 和 16 包容性的值数据。
  5. 单击""确定"然后退出注册表编辑器。
若要解决此问题 (而不修改注册表) 的第二个方法是确保各行与具有 255 个字符的数据的字段或更高版本,存在于源数据文件中的前 8 行。

更多信息

有效范围的值,TypeGuessRows关键是 0 到 16 个。但是,如果值为 0,扫描源行数将是 16384。请注意,如果值为零可能导致小的性能下降,如果源文件是非常大的。

重现问题的步骤

  1. 打开一个新的 Microsoft Excel 工作簿和工作表包含三个列 11 行并包括列名称与第一行。
  2. 将数据插入单元格上,以便前 8 行都具有数据小于 255 个字符的长度。
  3. 插入数据超过 255 个字符到第 10 和第 11 行的长度。将此工作表保存为 ExcelSource.xls。
  4. 打开 SQL Server 企业管理器并展开服务器名称。用鼠标右键单击数据转换服务然后单击导入数据.
  5. 为源,选择 Excel 97-2000年提供程序,并提供了更早版本 (ExcelSource.xls) 保存的 Excel 工作表的名称。
  6. 在目标选择的有关 SQL 的 Microsoft OLEDB 提供程序然后选择目标数据库。
  7. 单击"从源数据库复制表和视图然后单击下一步.
  8. 在该选择源表单击对话框选择工作表 Sheet1$,下一步然后立即运行该程序包。包执行失败并显示"症状"部分中显示的错误消息。

  9. 通过使用命令,从目标数据库中删除表工作表 Sheet1$删除表工作表 Sheet1$.
  10. 按照"替代方法"部分中的分辨率,并对注册表项进行的更改TypeGuessRows.
  11. 现在,重复步骤 4 至 8。这一次包执行是成功的。

引用

有关特定于 Microsoft Excel 此现象的其他信息,单击下列文章编号,查看 Microsoft 知识库中相应的文章:
189897XL97: 数据被截断为 255 个字符,使用 Excel 的 ODBC 驱动程序

属性

文章编号: 281517 - 最后修改: 2011年2月5日 - 修订: 1.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 7.0 标准版
  • Microsoft SQL Server 2000 标准版
关键字:?
kbjet kbprb kbmt KB281517 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 281517
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com