在 SQL Server 2017 标准版的读取规模可用性组中无法访问副本数据库

Posted

技术标签:

【中文标题】在 SQL Server 2017 标准版的读取规模可用性组中无法访问副本数据库【英文标题】:Replica database is not accessible in Read Scale Availability Group in SQL Server 2017 Standard edition 【发布时间】:2019-10-01 13:46:20 【问题描述】:

我正在研究将数据库从本地环境复制到 Azure 的方法,我发现其中一个选项是设置读取规模可用性组。

我使用 Read-Scale 而不是 Always On 可用性组的原因是因为成本原因我不会使用 SQL Server Enterprise 版本。

我按照 Microsoft (MS TUTORIAL) 的教程进行了所有设置,最后,当我的数据库出现在 Azure 环境中时,我认为我可以正常工作。

但是,问题是我的副本始终处于 Synchronizing 状态 - 这可能是由于我使用 AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT 命令选择了异步复制 - 但更糟糕的是我无法访问数据库本身。 每次我尝试对其发起查询时,它都会返回 Object is not accessible 异常。

经过一番阅读,我发现造成这种情况的原因可能是因为我的副本没有辅助角色。尝试通过... SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL)... 命令设置此功能,明确指出此功能在 SQL Server 的标准版本中不可用。

我的整个困惑来自这样一个事实,即在 Microsoft 文档 (MS DOCS) 上,它说 With availability groups, one or more secondary replicas can be configured to support read-only access to secondary databases. 这正是我没有成功的地方。

是否有人遇到过同样的问题,或者知道如何在 SQL Server Standard 上配置 Read-Scale 可用性组,以便我的第二个副本也可以访问和读取?

附:我确实使用事务复制查看了实际的 SQL 复制,但那里有相当多的移动部分,所以在做出决定之前我正在探索所有选项。

【问题讨论】:

【参考方案1】:

根据 Twitter 对话,我发现您需要在辅助副本中创建数据库的快照才能从那里读取。

请阅读此高音thread。

我还在feedback 频道中添加了修复文档的建议。

【讨论】:

以上是关于在 SQL Server 2017 标准版的读取规模可用性组中无法访问副本数据库的主要内容,如果未能解决你的问题,请参考以下文章

在 Microsoft SQL Server 2017 上执行长 SQL 脚本

SQL Server AlwaysON 从多个辅助读取

如何使用标准 BIP 参数在 BI Publisher 中调用 SQL Server 存储过程

标准版与企业版 SQL Server 2016 SP1 只读副本

SQL Server, VIEW 混淆了数据

使用新硬件升级 TFS SQL Server 数据层