
# RDS for SQL Server规格变更或主备切换失败
#### 场景描述
- 通过管理控制台下发规格变更时，右上角报错"当前实例数据库主备同步关系异常，无法执行该操作"。
  图1规格变更失败   
  ![](https://support.huaweicloud.com/trouble-rds-mssql/zh-cn_image_0000002249955497.png) 
- 通过管理控制台进行主备切换时，右上角报错"当前实例数据库主备同步关系异常，无法主备倒换"。
  图2主备切换失败   
  ![](https://support.huaweicloud.com/trouble-rds-mssql/zh-cn_image_0000002250115385.png) 
 
#### 故障分析
可能是由于复制关系异常导致无法下发规格变更，可通过以下两种方式分析，任选其一即可。
- **方式1：通过查看监控指标（数据同步延迟）**
  1. 登录管理控制台。
  
  2. 在"实例管理"页面，选择目标实例，单击操作列中的"查看监控指标"，跳转到云监控服务页面。 您也可以在"实例管理"页面，单击目标实例名称，在页面右上角，单击"查看监控指标"，跳转到云监控服务页面。
     
  
  3. 在云监控页面，可以查看实例的"数据同步延迟"指标，当出现数值过大例如99999表示复制关系异常。
   
- **方式2：通过SSMS（SQL Server Management Studio）查看**
  如下[图3]所示，正常建立复制关系的数据库状态会显示"Principal, Synchronized"例如 rdsadmin。
  db1数据库没有复制状态，表示没有建立复制关系，则不能进行主备切换。也可能显示"Principal，Disconnected"表示复制关系中断，也不能进行主备切换。
  ![](https://support.huaweicloud.com/trouble-rds-mssql/public_sys-resources/note_3.0-zh-cn.png)
  如果是2017企业版，则数据库复制关系正常的会只显示"Synchronized"。
  图3数据库复制关系   
  ![](https://support.huaweicloud.com/trouble-rds-mssql/zh-cn_image_0000002215075510.png) 
 
#### 解决方案
当前存在数据库没有建立复制关系时如上图的db1数据库，需要检查数据库属性。
登录SSMS（SQL Server Management Studio）客户端，选择目标数据库，右键属性，查看Recovery model和Auto Close属性值。
图4查看属性   
![](https://support.huaweicloud.com/trouble-rds-mssql/zh-cn_image_0000002214915710.png)
- 如果Recovery model是Simple模式，则不会建立复制关系，需要改成full模式，通过SSMS设置，或者执行如下SQL语句修改
  ```
  ALTER DATABASE [database_name] SET RECOVERY FULL WITH NO_WAIT
  ```
  \[*database_name*\]：填写数据库名.
  示例：
  ```
  ALTER DATABASE [db1] SET RECOVERY FULL WITH NO_WAIT
  ```
  
- 如果Auto Close属性是True，也不会建立复制关系，需要关闭Auto Close属性，通过SSMS设置，或者执行如下SQL语句修改
  ```
  ALTER DATABASE [db1] SET AUTO_CLOSE OFF WITH NO_WAIT
  ```
  
 
修改完成后，等待建立复制关系，一般几分钟就会自动开始建立复制关系，建立时间取决于数据库的大小。
等待复制关系建立完成后即可重新执行规格变更或主备切换操作。
