我有一个天青搜索索引,通过变更跟踪同步到SQL服务器表。Azure搜索索引器错误:“文档密钥不能丢失或为空。”
我随机开始收到此错误后,我做出一些改变表(但不总是这样,我似乎无法始终如一地复制它不幸地):
[
{
"key": null,
"errorMessage": "Document key cannot be missing or empty."
}
]
我检查了我的桌子,有在Azure Search用于该密钥的列中没有空值(由sql not null约束强制执行)。没有其他解决方案,只能删除索引并从头开始重新创建索引。甚至没有删除所有的文件并再次运行索引器摆脱了错误。
[更新 - 已解决]
正如尤金的答案突出的问题是,通过Azure的搜索跟踪SQL表有不是映射到Azure的搜索键的主键(我们使用的是另一种独特的列作为天蓝色的键)。使用“SQL集成变化跟踪策略”模式时不会发生这种情况,因为索引器无法引用已删除的行(如果在删除sql跟踪表中的某些行后重新发布索引操作,索引器将失败)。
将sql表的主键设置为与索引的azure键相同之后,即使在删除时,一切似乎都能平稳运行。
有没有空字符串在列(“”)值的任何机会? –
不,即使这样,我期望重组一个空表将解决问题,但错误保持不变。 – Francesco
您提到您对表格进行了更改。你有没有更改主键列? –