【发布时间】:2018-01-04 13:44:54
【问题描述】:
【问题讨论】:
标签: sql-server ssis etl sql-server-data-tools
【问题讨论】:
标签: sql-server ssis etl sql-server-data-tools
警告信息是:
查找...在缓存引用数据时遇到重复的引用键值。此错误仅在完全缓存模式下发生。要么删除重复的键值,要么将缓存模式更改为 PARTIAL 或 NO_CACHE。"
请确认您在连接输入和参考表的列上没有重复值。
如果您在查找表中连接col1,则运行查询以检查是否存在重复项,例如:
SELECT col1,Count(*) FROM LookupTable
GROUP BY col1
HAVING COUNT(*)>1
类似问题
【讨论】:
检查查找键上的重复项(而不是其各个列成员)。以下查询可用于识别重复记录并识别完美的查找键:
select row_number() over(partition by /*LookUp Key*/ [Column1], [Column2], ..., [ColumnN]
order by /*LookUp Key*/ [Column1], [Column2], ..., [ColumnN]
) row_
,*
from [Database].schema.[Reference Table]
--where 1=1
当“row_”列大于 1 时,表示您的 Lookup Key 引用了重复记录。为了解决这个问题,您可以为参考数据尝试另一个查找键,或者您可以使用上面查找键的 SSIS 查找任务中的以下代码获得唯一的参考数据记录:
--Reference data without Lookup key duplicates
with reference_data as (
select [Column1]
,[Column2]
,...
,[ColumnN]
,row_number() over(partition by /*LookUp Key*/partition by /*LookUp Key*/ [Column1], [Column2], ..., [ColumnN]
order by [Reference Data Unique Key] desc
) row_
from [Database].schema.[Reference Table]
)
select [Column1]
,[Column2]
,...
,[ColumnX]
from reference_data
where row_ = 1
一般来说,查找键(不是组成它的列)必须是唯一的,这样不会提示此错误。
【讨论】: