2015-10-16 40 views
3

我在爲系統創建新碎片時遇到了麻煩。我有一個已經分片的數據庫,有兩個分片。添加新碎片 - Azure Elastics刻度

0-280000
280000-INF

我使用微軟提供的應用this

使用上面的應用程序,我選擇添加分片,當我嘗試添加一個新的分片和輸入400000作爲新的高鍵,執行操作,並在最後嘗試添加範圍映射時,我得到跟隨錯誤。

ERROR

{「映射引用碎片‘[數據源= XXXXXXXXXXXXXX 數據庫= XXXXXX]’中的碎片圖‘用戶ID’不能被添加因爲 其覆蓋範圍已經被另一個映射映射。錯誤 發生而執行的存儲過程 爲 操作「AddRangeMapping」「__ShardManagement.spBulkOperationShardMappingsGlobalBegin」。如果另一併發用戶 已經加入覆蓋的給定範圍內的映射可能出現這種情況。「}

在這方面的任何幫助將不勝感激。

回答

5

如果你的第二個分片實際上是280000-inf,inf意思是無窮大,那麼你收到的錯誤是正確的。第二個分片已包含400000的映射。您不需要添加分片,而需要分割第二個分片。請查看split-merge工具。

+0

注意我還沒有真正嘗試過。 – MikeWo

+0

刪除了我以前的評論。是的,那是你提到的問題。我更新了__shardmanagement.ShardMappingsGlobal和__shardmanagement.ShardMappingsLocal中的最大值。然後我嘗試運行該應用程序,併成功完成了所有步驟。 – imrn

+1

如果您已經在該範圍內的分片中存在需要移動的分片中的數據,那麼分割合併工具是正確的方法 - 分割合併工具的主要目的是移動數據。如果沒有數據需要移動,那麼你可以使用'RangeShardMap.SplitMapping'方法來分割映射https://msdn.microsoft.com/en-us/library/azure/dn823939.aspx –