Sql server 在一般性错误消息中拔出我的头发

Sql server 在一般性错误消息中拔出我的头发,sql-server,ssis,sql-server-2008-r2,Sql Server,Ssis,Sql Server 2008 R2,我有一个数据流,它是SharePoint列表源到ADO.NET数据库目标。在SSIS 2008中,当我运行此命令时,会出现以下错误。我已经浏览了我带来的40列,检查了输入大小和数据库列的大小,它们看起来很好。需要注意的是,我使用memo字段来定义文本数据类型。搜索的结果集是从SharePoint列表导入的600行。我运行这个数据流,得到下面的错误,在需要导入的600个数据流中,只有200个被写入数据库 3个有趣的测试 测试1,将缓冲区大小增加到3000万,我现在得到390行 导入,然后我得到下

我有一个
数据流
,它是
SharePoint列表源
ADO.NET数据库目标
。在SSIS 2008中,当我运行此命令时,会出现以下错误。我已经浏览了我带来的40列,检查了输入大小和数据库列的大小,它们看起来很好。需要注意的是,我使用memo字段来定义文本数据类型。搜索的结果集是从SharePoint列表导入的600行。我运行这个数据流,得到下面的错误,在需要导入的600个数据流中,只有200个被写入数据库

3个有趣的测试

  • 测试1,将缓冲区大小增加到3000万,我现在得到390行 导入,然后我得到下面的错误
  • 测试2,将值提高到50 百万导致错误立即发生。我没有碰过 批量大小为2000
  • 测试3,我取消了几个随机列的映射 在SharePoint列表源的中间,现在得到所有行 进口的
我不明白发生了什么事。我似乎遇到了某种内部限制,这是SharePoint适配器的问题吗

错误


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

我会尝试降低批量大小。另外,请检查数据源的高级属性,并查看您的备注字段在包数据流中被转换为什么SSIS数据类型。科学方法将成为您的朋友。改变一件事并进行测试。重复此操作,直到确定导致失败的原因。您遇到的错误是在缓冲区的填充中(sharepoint适配器产生的错误)。你可以删除你的目的地并继续得到相同的结果。正如@billinkc所说,你的缓冲区内存不足。听起来您的SSIS服务器(或笔记本电脑)上的资源非常有限。您可以配置数据流属性BufferTempStoragePath,为其提供溢出到磁盘的位置。我忘记了NTEXT是二进制的,但是你也需要考虑BlobTempStoragePath。我不知道这是一个管道内存耗尽的问题,就像把5LB的数据塞进1LB包一样。
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)