Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Solves the problem that SQL Server instances are locked when the storage space is full

Última atualização: Jun 26, 2026

Quando uma instância ApsaraDB RDS para SQL Server esgota o espaço em disco, o sistema a bloqueia automaticamente para evitar perda de dados. Após o bloqueio, todas as operações de gravação falham e o indicador de status de execução no console do RDS reflete o estado bloqueado.

O espaço de armazenamento pode se esgotar por três motivos:

  • Alto uso de arquivos de log — os logs de transação crescem continuamente devido a um grande volume de transações ou a transações individuais muito grandes.

  • Alto uso de arquivos de dados — os arquivos de dados do banco de dados acumulam espaço alocado que não é recuperado automaticamente após a exclusão de linhas.

  • Alto uso de arquivos temporários — o tempdb consome espaço em excesso.

Este tópico explica como identificar qual causa se aplica à sua instância e como resolvê-la.

Verificar o uso de espaço

Há dois métodos disponíveis. Use o Método 1 para uma visão geral visual rápida e o Método 2 para obter os tamanhos exatos dos arquivos por banco de dados.

Método 1: Visualizar a página de monitoramento

Na página de monitoramento da instância, verifique as seguintes métricas. Para mais detalhes, consulte Visualizar monitoramento padrão.

Métrica

O que ela mede

The size of consumed disk space

Arquivos de dados e de log de todos os bancos de dados do usuário

The data size

Arquivos de dados (.mdf e .ndf) de todos os bancos de dados do usuário

The size of consumed log space

Arquivos de log (.ldf) de todos os bancos de dados do usuário

Temporary file size

Todos os arquivos .mdf, .ndf e .ldf do tempdb

System file space usage

Arquivos de dados e de log de master, msdb e model, além dos arquivos de sistema (logs de erro, arquivos DLL e similares) no diretório da instância SQL Server

Método 2: Executar uma consulta SQL

Conecte-se à instância e execute instruções SQL para verificar o tamanho exato dos arquivos de dados (.mdf e .ndf) e dos arquivos de log (.ldf) em todos os bancos de dados. Para mais detalhes, consulte Como visualizo o tamanho de um banco de dados RDS para SQL Server e das tabelas nele contidas.

Resolver o bloqueio

Ao executar operações que envolvem riscos, como modifique configurações de instâncias ou dados, verifique as capacidades de recuperação de desastres e tolerância a falhas das instâncias para garantir a segurança dos dados.
Antes de modifique as configurações e os dados de instâncias, incluindo, entre outras, instâncias ECS e RDS, recomendamos crie snapshots ou ative o backup de log do RDS.
Se você tiver autorizado ou enviado informações de segurança, como conta de logon e senha, no Alibaba Cloud Management console, recomendamos modifique essas informações o quanto antes.

Aumentar o espaço de armazenamento

Aumentar o espaço de armazenamento desbloqueia a instância imediatamente. Consulte Alterar as especificações de uma instância ApsaraDB RDS para SQL Server para ver as etapas necessárias.

Se a instância já atingiu o limite máximo de armazenamento, envie um ticket para desbloqueá-la temporariamente enquanto você libera espaço.

Resolver alto uso de arquivos de log

Diagnosticar a causa

Conecte-se à instância e execute a seguinte consulta:

SELECT name, log_reuse_wait, log_reuse_wait_desc FROM sys.databases;

Se o valor de log_reuse_wait_desc for LOG_BACKUP, reduza o log de transação (veja a seguir).

**Reduzir o log de transação (quando log_reuse_wait_desc é LOG_BACKUP)**

Para reduzir o log de transação, siga as instruções em Como reduzo os logs de transação de uma instância ApsaraDB RDS para SQL Server.

Se o arquivo de log for muito grande, o backup levará mais tempo. Caso existam transações não confirmadas no momento da redução, uma única operação pode não recuperar todo o espaço. Execute a operação de redução novamente após a conclusão do backup.

Evitar recorrência: divida transações grandes

O crescimento acelerado do log é causado, quase sempre, por um grande volume de transações ou por transações individuais muito grandes. Por exemplo, se uma única transação atualiza 5 milhões de linhas, divida-a em 50 lotes de 100.000 linhas cada. Transações menores geram menos crescimento de log e permitem truncamentos mais frequentes.

Resolver alto uso de arquivos de dados

Os arquivos de dados não diminuem automaticamente quando linhas são excluídas — o espaço alocado permanece alocado. Identifique quais bancos de dados concentram espaço livre significativo e, em seguida, reduza-os seletivamente.

Etapa 1: Identificar bancos de dados com alto espaço livre

Execute a consulta a seguir em cada banco de dados para verificar quanto espaço está alocado mas não utilizado:

USE [$DB_Name];
SELECT
    SUM(unallocated_extent_page_count) AS [free pages],
    (SUM(unallocated_extent_page_count) * 1.0 / 128) AS [free space in MB]
FROM sys.dm_db_file_space_usage;

Substitua $DB_Name pelo nome do banco de dados de destino.

Etapa 2: Reduzir o banco de dados ou um arquivo específico

Para reduzir um banco de dados inteiro:

DBCC SHRINKDATABASE([$DB_Name]);

Para reduzir um único arquivo:

DBCC SHRINKFILE(file_id, [$Size]);

Substitua $Size pelo tamanho alvo após a redução (não pela quantidade a reduzir), em MB.

Resolver alto uso de arquivos temporários

Diagnosticar a causa

Na aba de monitoramento da instância, verifique o consumo de arquivos temporários. Quando o tempdb fica com pouco espaço, o erro correspondente também é registrado no log de erros.

Para um guia detalhado de solução de problemas, consulte a documentação da Microsoft sobre Como solucionar problemas de espaço em disco insuficiente no tempdb.

Resolução

  • Reinicie a instância para liberar o espaço dos arquivos temporários imediatamente.

  • Libere tabelas temporárias, versões de linha e variáveis de tabela no código da aplicação o quanto antes para evitar que o tempdb cresça desnecessariamente.

Escopo de aplicação

ApsaraDB RDS for SQL Server