# RDS for SQL Server实例磁盘满的处理方法
当实例由于各种原因磁盘使用率达到97%及以上时，出于保护磁盘的目的（完全打满会导致磁盘异常），系统会设置数据库为只读状态，查看实例的运行状态为"存储空间满"。
图1查看实例运行状态   
![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002249956561.png "点击放大")
#### 可能原因
- 业务量增大导致磁盘满。
- 部分库ldf文件过大导致的磁盘满。
- tempdb满导致的磁盘满。
 
#### 解决方法
- **推荐用户扩容磁盘。**
  1. 在实例列表，选择"更多 \> 磁盘扩容"。
  
  2. 在扩容磁盘页面，系统会自动判断需要扩容的最小空间。
     图2扩容磁盘   
     ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002249956565.png "点击放大") 
  
  3. 扩容成功后，实例运行状态恢复正常，只读状态解除，请检查业务。
     图3查看实例运行状态   
     ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002250116449.png "点击放大") 
   
- 对于部分库ldf文件过大导致的磁盘满的场景。 请参考[收缩数据库](https://support.huaweicloud.com/usermanual-rds-mssql/rds_09_0049.html)处理。
  图4查看ldf文件大小   
  ![](https://support.huaweicloud.com/usermanual-rds-mssql/zh-cn_image_0000002214916738.png "点击放大") 
- 对于tempdb占用空间多导致的磁盘满的场景。
  1. tempdb大小通过SQL语句查询。
     ```
     SELECT name AS FileName,
     size*1.0/128 AS FileSizeInMB,
     CASE max_size
     WHEN 0 THEN 'Autogrowth is off.'
     WHEN -1 THEN 'Autogrowth is on.'
     ELSE 'Log file grows to a maximum size of 2 TB.'
     END,
     growth AS 'GrowthValue',
     'GrowthIncrement' =
     CASE
     WHEN growth = 0 THEN 'Size is fixed.'
     WHEN growth > 0 AND is_percent_growth = 0
     THEN 'Growth value is in 8-KB pages.'
     ELSE 'Growth value is a percentage.'
     END
     FROM tempdb.sys.database_files;
     ```
     
  
  2. 参考[收缩数据库](https://support.huaweicloud.com/usermanual-rds-mssql/rds_09_0049.html)收缩tempdb，如果tempdb当前使用频繁，将无法有效降低磁盘使用率。
  
  3. 在实例列表，选择"更多 \> 重启实例"，重启数据库实例，该方式会释放tempdb空闲空间。
     重启后，实例的磁盘满状态会恢复正常。
     ![](https://support.huaweicloud.com/usermanual-rds-mssql/public_sys-resources/notice_3.0-zh-cn.png)
     下发重启实例后，由于tempdb导致的磁盘满状态会恢复，但是由于业务库ldf文件过大导致的磁盘满不能恢复，还会导致事务日志大的业务库处于inRecovery状态，无法正常访问（持续时间比较久）。因此，推荐使用扩容磁盘的解决方法，安全性更高。
     
   
 
