如何通过Azure Elastic Sc​​ale查询复制的分片数据库?

时间:2017-03-29 08:47:21

标签: sql-server azure azure-sql-database azure-elastic-scale

我正在将现有解决方案转换为使用多租户分片而不是单个数据库。

我的主数据库被复制到辅助Azure区域(活动地理复制)。我们使用此复制数据库来获取一些数据以减少主数据库的负载。

我想将所有分片与Shard Manager数据库一起复制,以便我可以通过复制的Shard Manager db连接到复制的租户数据库。

问题是复制的Shard Manager数据库仍然返回与位于主数据库服务器上的分片的连接。

有什么方法可以强制复制的Shard Manager DB返回到复制的分片的连接?

1 个答案:

答案 0 :(得分:0)

我们最终通过从ShardMap获取原始分片位置来创建连接字符串,然后更改数据库服务器。

var replicatedConnectionString = new SqlConnectionStringBuilder(shardedConnectionString);
replicatedConnectionString.DataSource = "replicated-db.database.windows.net";

replicatedConnectionString.InitialCatalog = shardMap.AsListShardMap<int>()
                                                    .GetMappingForKey(shardingKey)
                                                    .Shard
                                                    .Location
                                                    .Database;