我有一个多年前创建的azure分片系统,因此每个数据库中分片的模式都很老。换句话说,以下表格和程序较旧。因此升级它们的一种方法是通过执行以下脚本将此模式放在每个分片数据库中。
DROP TABLE [__ShardManagement].[ShardMapManagerLocal]
DROP TABLE [__ShardManagement].[ShardMappingsLocal]
DROP TABLE [__ShardManagement].[ShardMapsLocal]
DROP TABLE [__ShardManagement].[ShardsLocal]
DROP PROC [__ShardManagement].[spAddShardLocal]
DROP PROC [__ShardManagement].[spBulkOperationShardMappingsLocal]
DROP PROC [__ShardManagement].[spFindShardMappingByKeyLocal]
DROP PROC [__ShardManagement].[spGetAllShardMappingsLocal]
DROP PROC [__ShardManagement].[spGetAllShardsLocal]
DROP PROC [__ShardManagement].[spGetStoreVersionLocalHelper]
DROP PROC [__ShardManagement].[spKillSessionsForShardMappingLocal]
DROP PROC [__ShardManagement].[spRemoveShardLocal]
DROP PROC [__ShardManagement].[spUpdateShardLocal]
DROP PROC [__ShardManagement].[spValidateShardLocal]
DROP PROC [__ShardManagement].[spValidateShardMappingLocal]
DROP FUNCTION [__ShardManagement].[fnGetStoreVersionMajorLocal]
然后使用Elastic数据库工具库再次创建分片,它将重新创建数据库模式。新架构将是最新的。
但是,我不想手动为每个分片数据库执行此操作。我正在寻找一些方法来升级架构,而无需手动删除和重新创建它。我查看了图书馆,它不包含任何此类内容 功能
库中的以下函数仅更新分片中的元数据,而不是模式。
_shardMapManager.UpgradeGlobalStore();
foreach(ShardLocation loc in _shardMapManager.GetDistinctShardLocations())
{
_shardMapManager.UpgradeLocalStore(loc);
}
所以我的问题是;如何升级每个分片数据库中的模式。我想升级架构,因为最新的Elastic客户端库1.3.3在创建映射时会抛出错误。但是,第一个版本(最早的版本0.7)适用于此架构。