在 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 脚本
如何使用标准 BIP 参数在 BI Publisher 中调用 SQL Server 存储过程