在ssis中缓冲区temp和blob temp的实际用途是什么

Nik*_*RED 1 ssis

我已经将sql server属性中的内存设置更改为低内存.我已经将缓冲区临时路径更改为系统的特定位置.但是为什么包失败并且消息内存不足?.如果我们设置缓冲区临时值和blob temp,数据应该交换到那个临时位置吗?那么如果它失败了,缓冲区temp的用途是什么?

bil*_*nkc 5

有点相关SSIS 2005中BufferTempStoragePath的默认文件路径位置是什么?特别是,从simon代理服务帐户中读取bimonkey中有关磁盘上这些位置的可访问性的链接文章.

一般来说,当您的包报告内存不足时,这是由于使用完全阻塞转换和查找任务撤回过多数据.如果您的包大量使用阻塞转换,请尝试将工作卸载到源系统.如果要责备查找,请尝试在查询中更具选择性.不要拉回整个桌子,只需拉动你需要的柱子.如果这不够具有选择性,您可以尝试使用where子句过滤该数据集(我只需要当前年份的数据等).如果失败,请将查找从完全缓存模式切换到部分缓存或不缓存.对于通过的每一行,没有缓存将导致对源系统的一次性查询.它将没有内存,它在2行前运行完全相同的查询.部分缓存通过将X MB数据保留在内存中来解决这一难题.如果您想了解有关如何减少内存使用量的更多详细信息,请发布您的包的外观截图.另请注意,BufferTempStoragePath等设置是每个数据流,因此如果包中有多个数据流,则需要配置每个数据流.

数据流的体系结构使得数据被读入内存缓冲区,并且这些缓冲区的地址被传递给各种任务.而不是每个任务需要分配给它们的大量内存来保存通过它们的数据,它们都在相同的共享内存集上工作.将内存从任务复制到任务在内存消耗方面会很慢并且非常昂贵.

有序言说,BufferTempStoragePath和BlobTempStoragePath是什么?任何时候你拉大对象类型(N/VARCHAR(最大值),XML,图像等)到数据流,这些数据是保存在像本地类型的内存缓冲区.而是将其写入磁盘,并指向该地址的指针放入内存缓冲区.当您的数据流任务仍有工作要做但您也可以使用BufferTempStoragePath

  • 你的记忆碎片太多(通过完全/部分阻塞变换)引擎无法再获得
  • 我试图在一项任务中做太多的事情.我的经验法则是,我应该能够跟踪包中任何转换到所有源和目标的线.如果您已经从导入/导出向导创建一个包,这些数据流是被拆分成不同的流总理候选人,因为它爱群无关的东西到一个单一的数据流,这使得它们的内存饿了.
  • 该框只是没有足够的资源来执行数据.我通常宁愿避免在工作中投掷更多的硬件,但如果你已经解决了前两个子弹,这将是我手枪中的最后一个.