CRM部署Always on 后 CRM报无法更新数据库,数据库只读,且读写分离不正常

CRM部署Always on 后 CRM报无法更新数据库,数据库只读,读写分离不正常

      • 问题描述
      • 背景信息
      • 问题原因
      • 解决方案

问题描述

CRM部署Always on 后 CRM报无法更新数据库,数据库只读
读写分离不正常,出现错乱链接。

背景信息

1.2个节点配置SQL server AG(DB01,DB02)
2.错误信息:
Unable to update database ‘CRMAPIDB’ because the database is read-only
Unable to update database ‘CRM_MSCRM’ because the database is read-only
3.连接字符串:connecttion string :Data Source=SQLHA;Initial Catalog=CRM_MSCRM;Integrated Security=SSPI

问题原因

应用和SQL的4台服务器都为Azure VM,检查AG侦听器的负载均衡设置,发现负载均衡器的运行状况探测设置端口为1433,与SQL server的端口重复。并且负载均衡规则的浮动IP 并未勾选。

解决方案

1.负载均衡器的运行状况探测重新设置为59999,并运在SQL任意节点中运行以下Powershell。

$ClusterNetworkName = “” # The cluster network name. Use Get-ClusterNetwork on Windows Server 2012 or later to find the name.
$IPResourceName = “” # The IP address resource name.
KaTeX parse error: Expected 'EOF', got '#' at position 29: … = "" #̲ The IP address…ListenerProbePort =

Import-Module FailoverClusters

Get-ClusterResource KaTeX parse error: Expected '}', got 'EOF' at end of input: …e @{"Address"="ListenerILBIP";“ProbePort”= L i s t e n e r P r o b e P o r t ; " S u b n e t M a s k " = " 255.255.255.255 " ; " N e t w o r k " = " ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"=" ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="ClusterNetworkName";“EnableDhcp”=0}

CRM部署Always on 后 CRM报无法更新数据库,数据库只读,且读写分离不正常_第1张图片

2.应用指定ReadOnly的时候,连接就连到SQL高可用组的次要副本,指定ReadWrite的时候连接就连到SQL高可用组的主要副本。
通过以下T-SQL修改只读路由列表,然后测试连接

ALTER AVAILABILITY GROUP [CRMHA]

MODIFY REPLICA ON

N’DB01’ WITH

(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=((‘DB02’),‘DB01’)));

ALTER AVAILABILITY GROUP [CRMHA]

MODIFY REPLICA ON

N’DB02’ WITH

(PRIMARY_ROLE (READ_ONLY_ROUTING_LIST=((‘DB01’),‘DB02’)));

3.在Azure Portal中将DB01和DB02的负载均衡器规则的浮动IP开启。
CRM部署Always on 后 CRM报无法更新数据库,数据库只读,且读写分离不正常_第2张图片

更多信息
教程:配置 SQL Server Always On 可用性组 - SQL Server on Azure VMs | Microsoft Learn

你可能感兴趣的:(Windows服务器,Dynamics,CRM,SQL,Server,数据库,microsoft,sqlserver,azure)