弹性数据库工具常见问题解答 (FAQ)

适用于:Azure SQL 数据库

如果每个分片具有单租户且没有分片密钥,如何填充架构信息的分片密钥?

架构信息对象仅用于“拆分/合并”方案。 如果某个应用程序本质上是单租户,那么它则不需要“拆分/合并”工具,因此无需填充架构信息对象。

我已预配数据库,并且我已有分片映射管理器,如何将此新数据库注册为分片?

弹性数据库工具的成本是多少?

使用弹性数据库客户端库不会产生任何费用。 只有用于分片和分片映射管理器的 Azure SQL 数据库中的数据库,以及为“拆分/合并”工具预配的 Web/辅助角色才会产生费用。

为什么从其他服务器添加分片时凭据不起作用?

请不要使用“用户 ID=用户名@服务器名称”格式的凭据,而只需使用“用户 ID = 用户名”格式。 此外,请确保“用户名”登录名对分片具有权限。

是否需要创建分片映射管理器并在每次启动应用程序时填充分片?

否 - 分片映射管理器(例如,ShardMapManagerFactory.CreateSqlShardMapManager)只需创建一次。 在启动应用程序时,应用程序应使用调用 ShardMapManagerFactory.TryGetSqlShardMapManager()。 每个应用程序域只应有一个这样的调用。

当使用分片键建立数据库连接的同时,仍然可以对同一分片上的其他分片键查询数据。 这是设计吗?

弹性缩放 API 使用户能够连接到分片键的正确数据库,但不提供分片键筛选。 将子句添加到 WHERE 查询,以根据需要将范围限制为提供的分片键。

是否可以对分片集中的每个分片使用不同的 SQL 数据库版本?

是的,每个分片是单独的数据库,因此,一个分片可以是高级版,而另一个可以是标准版。 此外,在分片的生命周期内,该分片的版本可以进行多次上调或下调。

拆分合并工具在拆分或合并作期间是否预配或删除数据库?

不是。 对于 拆分 操作,必须存在目标数据库和相应的架构,并且必须注册到分片映射管理器。 对于 合并 操作,必须从分片映射管理器中删除分片,并删除数据库。

尚未使用弹性数据库工具? 请查看入门指南