ListShardMap。 UpdateMapping抛出异常LockOwnerId不能为空

时间:2018-02-16 15:19:15

标签: azure elasticsearch azure-elastic-scale

我尝试了不同的方法并搜索了很多错误,但到目前为止没有运气。

我正在尝试创建一个可以更新现有分片映射的函数,但是我得到以下异常。

'

虽然我创建了创建分片和删除分片功能但它们工作正常。但是在更新或创建映射时我收到了上述错误。

以下是我的代码:

Microsoft.Azure.SqlDatabase.ElasticScale.ShardManagement.ShardManagementException: Store Error: Error 515, Level 16, State 2, Procedure __ShardManagement.spBulkOperationShardMappingsLocal, Line 98, Message: Cannot insert the value NULL into column 'LockOwnerId', table 'TEST-POS.__ShardManagement.ShardMappingsLocal'; column does not allow nulls. INSERT fails.

我得到相同的错误,无论是否提供令牌。然后我也尝试以这种方式提供令牌MappingLockToken.Create(),但后来我得到了不同的错误,没有提供正确的令牌。这也很明显,因为令牌不同。

                PointMapping<int> pointMapping;
                bool mappingExists = _listShardMap.TryGetMappingForKey(9, out pointMapping);
                if (mappingExists)
                {
                    var shardLocation = new ShardLocation(NewServerName, NewDatabaseName);
                    Shard _shard;
                    bool shardExists =
                    _listShardMap.TryGetShard(shardLocation, out _shard);

                    if (shardExists)
                    {
                        var token = _listShardMap.GetMappingLockOwner(pointMapping);
                        var mappingUpdate = new PointMappingUpdate { Shard = _shard, Status = MappingStatus.Online };
                        var newMapping = _listShardMap.UpdateMapping(_listShardMap.MarkMappingOffline(pointMapping), mappingUpdate, token);
                    }
                }

我还检查了数据库中[__ShardManagement]。[ShardMappingsGlobal]表中的LockOwnerId,这是ID = 00000000-0000-0000-0000-000000000000

我虽然因为令牌Id为零而得到空插入错误,所以我通过执行更新查询手动将其更新到数据库中的451a4da0-e3d4-42ac-bdc3-5b57022693d0。但它不起作用,我得到相同的不能将值NULL插入列'LockOwnerId'错误。

我在创建新映射时也面临同样的Null错误,我在代码中没有看到在创建映射时提供令牌的位置。以下是代码。

    _listShardMap.UpdateMapping(offlineMapping, mappingUpdate, MappingLockToken.Create());

Microsoft.Azure.SqlDatabase.ElasticScale.ShardManagement.ShardManagementException: Mapping referencing shard '[DataSource=cps-pos-test-1.database.windows.net Database=Live_MSA_Test_Cloud]' belonging to shard map 'ClientIDShardMap' is locked and correct lock token is not provided. Error occurred while executing procedure 

我在谷歌搜索了很多,并下载了一些示例应用程序,但我无法找到解决方案。我将非常感谢任何帮助。

0 个答案:

没有答案