Tenho um banco de dados SQL Server que atingiu o limite de 10 GB.
Quando eu uso EXEC sp_spaceused
, eu recebo
reservado | dados | tamanho_índice | não utilizado |
---|---|---|---|
10483208 KB | 10352336 KB | 90.264 KB | 40.608 KB |
No entanto, quando faço esta consulta:
SELECT
SUM(a.total_pages) * 8 AS TotalSpaceKB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB
FROM
sys.tables t
JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT JOIN
sys.schemas s ON t.schema_id = s.schema_id
Entendo que a soma das tabelas mal chega a 450 MB.
Comecei a receber este erro ao fazer alguns procedimentos:
System.Data.SqlClient.SqlException (0x80131904): Não foi possível alocar espaço para o objeto 'sys.change_tracking_517680992' .'sys_change_cidx' do banco de dados '***' porque o grupo de arquivos 'PRIMARY' está cheio. Exclua arquivos desnecessários, remova objetos do grupo de arquivos, adicione arquivos adicionais ao grupo de arquivos ou defina a opção de crescimento automático para arquivos existentes no grupo de arquivos para criar espaço em disco.
Então, acho que são os logs ou arquivos de rastreamento que estão ocupando o espaço restante? Posso excluí-los de alguma forma?
Você executou o relatório “Uso de disco por tabela” no SSMS? Ele executa esta consulta:
Com base na mensagem de erro, o espaço pode ser ocupado pelo Change Tracking
Você está com ele habilitado? Você tem a limpeza automática configurada? O que é período_de_retenção? É algo que você espera?
Faça check-in em sys.change_tracking_databases
Se o seu problema estiver relacionado ao controle de alterações, aqui estão algumas soluções de problemas