是否可以重用共享查找缓存?
我已经将Cache转换组件用于foreach循环,以使用参数化查询对查找进行初始化。
必须为循环的每次迭代重写缓存。
但在第二次迭代中,我收到错误:
Error: 0xC0010200 at fill lookup cache, Cache Lookup Events [1]: The component "Cache Lookup Events" (1) cannot write to the cache because component "Cache Lookup Events" (1) has already written to it.
Error: 0xC0010201 at fill lookup cache, Cache Lookup Events [1]: Failed to prepare the cache for new data.
Error: 0xC004701A at fill lookup cache, SSIS.Pipeline: component "Cache Lookup Events" (1) failed the pre-execute phase and returned error code 0xC0010201.
一个想法是将缓存生命周期限制在循环范围内。喜欢变量。但我不知道如何将范围分配给缓存。
如何清理和重写缓存或删除并重新创建缓存?
答案 0 :(得分:2)
我自己试图找到答案,但显然所有的连接在程序包运行的整个过程中都是开放的。
您可以通过创建填充文件缓存的子包来解决这个问题,因为子包不共享连接管理器。
答案 1 :(得分:1)
我对缓存的读取建议在一个包执行中,特定缓存只能加载一次。请参阅此文“SSIS cache transform – Failed to Prepare the Cache For New Data”。
您的问题可能有解决方案,您可以从this blog退出。但它将使用文件系统任务重命名缓存。
另一个选项是编写缓存连接管理器的脚本,并按照此blog动态创建它。