【问题标题】:Pulling my hair out at Generic Error Message在通用错误消息中拉出我的头发
【发布时间】:2026-01-15 01:20:11
【问题描述】:

我有一个 dataflow ,它是一个 SharePoint List SourceADO.NET Database Destination 。在SSIS 2008 中,当我运行它时,我得到下面的错误。我已经浏览了我带来的 40 列,并检查了输入大小和数据库列的大小,它们看起来很好。需要注意的是,我正在使用备忘录字段来处理 ntext 数据类型。寻求的结果集是从 SharePoint List 导入的 600 行。我运行这个数据流,我得到下面的错误,在需要导入的 600 个数据库中,只有 200 个被写入数据库。

3 有趣的测试。

  • 测试 1,将缓冲区大小增加到 3000 万,我现在得到 390 行 导入,然后我得到下面的错误。
  • 测试 2,将值提高到 50 百万导致错误立即发生。我没摸过 批量大小为 2000。
  • 测试 3,我取消了一些随机列的映射 在 SharePoint 列表源的中间,所有行现在都得到 已导入。

我不明白发生了什么。看来我遇到了某种内部限制,这是 SharePoint 适配器问题吗?

错误

Microsoft.SqlServer.Dts.Pipeline.DoesNotFitBufferException: The value is too large to fit in the column data area of the buffer.

   at Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer.SetString(Int32 columnIndex, String value)

   at Microsoft.Samples.SqlServer.SSIS.SharePointListAdapters.SharePointListSource.PrimeOutput(Int32 outputs, Int32[] outputIDs, PipelineBuffer[] buffers)

   at Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostPrimeOutput(IDTSManagedComponentWrapper100 wrapper, Int32 outputs, Int32[] outputIDs, IDTSBuffer100[] buffers, IntPtr ppBufferWirePacket)

【问题讨论】:

  • 我会尝试降低批量大小。还要检查数据源的高级属性,并查看您的备注字段在包数据流中被转换为什么 SSIS 数据类型。
  • 科学方法在这里将成为您的朋友。改变一件事并进行测试。重复,直到您确定导致失败的原因。
  • 您遇到的错误是缓冲区的填充(来自共享点适配器的内容)。您可以删除您的目的地并继续获得相同的结果。
  • 正如@billinkc 所说,您的缓冲区内存不足。听起来您的 SSIS 服务器(或笔记本电脑)上的资源非常有限。您可以配置数据流属性 BufferTempStoragePath 为其提供一个溢出到磁盘的位置。我忘记了 ntext 是否被视为二进制文件,但您可能还需要考虑 BlobTempStoragePath。
  • 我不知道这是管道内存不足的问题,就像试图将 5lbs 的数据塞入 1lb 的袋子中一样

标签: sql-server ssis sql-server-2008-r2


【解决方案1】:

已解决。 sp list source 的来源说,一个字段在现实生活中为 150 时为 100。太令人沮丧了。更改了源上的字段大小。

【讨论】:

    最近更新 更多