Estou tentando espremer o máximo possível de bancos de dados SQL do Azure para torná-los aptos dentro de um SQL Elastic Pool.
Estou usando esta consulta que me permite comparar o espaço não alocado antes e depois da operação:
EXEC sp_spaceused @oneresultset = 1
GO
DECLARE @dbName VARCHAR(50)
SELECT @dbName = DB_NAME()
DBCC SHRINKDATABASE(@dbName, TRUNCATEONLY)
GO
EXEC sp_spaceused @oneresultset = 1
GO
Percebi que às vezes o espaço não alocado está aumentando em vez de diminuir:
Isso aconteceu mais de uma vez. Eu li online que após o uso dos SHRINKDATABASE
índices pode estar em todo lugar, mas aqui parece que index_size
realmente não mudou. E o unused
que está ao lado tem apenas 50 MB, então esse não pode ser o problema:
Como isso é possível?
E como fazer corretamente SHRINKDATABASE
no banco de dados SQL do Azure?
Você não deve encolher bancos de dados não é uma resposta válida porque neste cenário, sim, tenho que ganhar espaço.
Não adianta reinventar a roda. A Microsoft propõe uma solução pronta para uso para o banco de dados SQL do Azure: redução automática
Isso fez o truque.
Se você quiser reconstruir os índices, mais uma vez, não adianta reinventar a roda. A Microsoft propõe a reconstrução de índices do Banco de Dados SQL usando a Automação do Azure