高可用性副本 SQL Server 2014 中的只读意图

Posted

技术标签:

【中文标题】高可用性副本 SQL Server 2014 中的只读意图【英文标题】:read-only intent in high availability replicas SQL server 2014 【发布时间】:2016-09-28 11:36:48 【问题描述】:

我们在 Always On 集群中有 2 个 sql server 副本,当我们测试性能问题时,我们发现只有主节点在工作(读取和写入)。

主要设置为读写,辅助设置为只读意图, 我们希望将简单的选择查询发送到辅助副本,而写入查询将发送到主副本。

有没有一种方法可以在不使用 2 个不同的连接字符串为 2 种情况(第一种是读写,第二种是只读)创建 2 个不同的服务的情况下进行配置。

【问题讨论】:

不,没有,这通常也不是您想要的。原因是以这种方式混合副本会导致inconsistent results。即使你真的想要这个,引擎也无法在它到达服务器之前检测到什么查询是“写查询”,所以你的服务仍然必须做出区分。您可以使用您修改的一项服务和一个连接字符串来完成此操作,但您仍然需要两个连接。 【参考方案1】:

不,可用性组的只读和读写之间的区别发生在连接级别。要使连接转到只读副本,请在连接字符串中使用 ApplicationIntent=ReadOnly。

【讨论】:

以上是关于高可用性副本 SQL Server 2014 中的只读意图的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server复制情况下的高可用方案镜像+复制

SQL Server 2017 高可用性

利用HAProxy代理SQL Server的AlwaysOn辅助副本

SQL Server 2017 AlwaysOn AG 自动初始化

sql server 高可用性技术总结

SQL Server关于AlwaysOn的理解