小编Owe*_*iwi的帖子

关于可用性组可读中学的问题

最近我在我的 SQL 服务器中遇到了一个问题。请告知 AlwaysOn 集群背后的概念和机制。

背景:
我们建立了一个 AlwaysOn 集群,其中包含 1 个主节点dbs1和 1 个辅助节点dbs2。鉴于他们将可读的二级配置为“只读”。他们还创建了只读路由列表。每个指定“ ApplicationIntent=ReadOnly”的连接都将被重定向到dbs2.

问题:运行
的相同代理作业(用于从 mssql 到 MySQL 插入数据)dbs2不稳定 - 突然成功,突然失败。对于成功案例,代理会话将显示在dbs1而不是dbs2

对于失败的情况,它显示一个错误

“无法连接到 SQL Server '(本地)'”——代理作业历史记录

“目标数据库位于可用性组中,并且当应用程序意图设置为只读时,当前可以进行连接访问”。-- SQL 错误日志

但是当我们将 readable secondary 更改为“yes”时,代理作业始终可以在会话开启的情况下成功运行dbs2

我的问题:

1)只读意图的行为是什么?为什么代理工作失败?

2)即使它成功了,为什么会话是在dbs1而不是dbs2,因为代理工作被设置了dbs2?它与脚本中的插入/删除/更新命令有关吗?

3)只读意图和可读辅助选项是有什么区别?我已经测试过在指定“ ApplicationIntent= readonly”后后一个选项中的只读路由仍然有效

我真的很好奇他们的机制。请随时发表评论和讨论。谢谢。

附加信息(2017 年 8 月 4 日最新更新):

以下是我的代理工作脚本。我可以ApplicationIntent=ReadOnly在上面指定“ ”吗?我很困惑,这个 T-SQL 没有在 SQL Server 表中写入任何数据,而是在另一个 MySQL 数据库中写入。为什么可用性组不让我通过?再次特别感谢 …

sql-server high-availability availability-groups

5
推荐指数
1
解决办法
1939
查看次数