2017-02-15 23 views
0

只需要更清楚地了解RangeShardMappings标记为离线时发生的情况。Azure弹性比例:MarkMappingOffline不会阻止搜索片段

我知道映射需要设置为脱机更新和删除分片和映射。

我想保留映射,但是在任何特定时间阻止Azure映射管理器使用特定映射,我希望只是将它们标记为脱机将允许我执行此操作,但它似乎对搜索结果没有影响。

根据MS文档(https://docs.microsoft.com/en-us/azure/sql-database/sql-database-elastic-scale-shard-map-management

上碎片映射某些操作时的映射 处于“离线”状态,包括UpdateMapping和DeleteMapping只允许。 映射处于脱机状态时,基于该映射中包含的密钥 的数据相关请求将返回错误。此外,当 范围首次脱机时,为了防止针对针对更改范围的查询的不完整结果或不完整结果,将自动终止到受影响分片 的所有连接。

但是,这不是我正在经历的行为。离线地图仍然返回结果集。这些映射是否存储在缓存中?

回答

1

离线标记映射的主要目的是防止使用OpenConnectionForKey的连接。毕竟,如果映射是不可见的,映射仍然是可见的,那么你以后就无法在网上标记它。

离线地图仍然返回结果集。

啊,现在我明白你的问题了。碎片映射管理器不知道或控制数据库中的基础数据。这意味着碎片映射可能有责任确保您的查询where子句包含与您请求的映射相匹配的过滤器。您还可以使用row-level security来确保您的查询仅返回正确的结果集。

+0

谢谢贾里德,我没有使用OpenConnectionForKey,这是有道理的。 – redstubble