Hoje, fui atingido pelo erro abaixo em meu banco de dados SQL Server com vários arquivos em vários grupos de arquivos.
ID do evento: 1105. Não foi possível alocar espaço para o objeto no banco de dados porque o grupo de arquivos 'PRIMARY' está cheio. Crie espaço em disco excluindo arquivos desnecessários, descartando objetos no grupo de arquivos, adicionando arquivos adicionais ao grupo de arquivos ou definindo o crescimento automático para arquivos existentes no grupo de arquivos.
MSSQL 2014: Não foi possível alocar espaço para o objeto no banco de dados porque o grupo de arquivos está cheio
Ocorreu quando meu trabalho de manutenção de índice estava em execução. Especificamente durante a reorganização do índice de um dos arquivos index. Após investigação, descobri que todos os meus grupos de arquivos tinham pelo menos um arquivo com crescimento automático ativado e todos os arquivos habilitados para crescimento automático residentes nas respectivas unidades tinham espaço livre suficiente disponível. Portanto, não havia problema de espaço ou crescimento automático de arquivo (considerando que tenho pelo menos um arquivo em cada grupo de arquivos com crescimento automático ativado) . com/en-us/library/aa337441.aspx
Quando um índice está localizado em vários arquivos, ALTER INDEX REORGANIZE pode retornar o erro 1105 quando um dos arquivos está cheio. O processo de reorganização é bloqueado quando o processo tenta mover linhas para o arquivo completo. Para contornar essa limitação, execute um ALTER INDEX REBUILD em vez de ALTER INDEX REORGANIZE ou aumente o limite de crescimento de qualquer arquivo que esteja cheio.
Portanto, para corrigir meu problema, reconstruí meu índice, que corrigiu o problema. No entanto, estou procurando maneiras de evitá-lo, pois pode ocorrer para diferentes índices no futuro e fazer a reconstrução manual do índice o tempo todo não é uma boa maneira de corrigi-lo? Eu adoraria ouvir suas sugestões sobre isso.
Não tenha apenas um único arquivo no grupo de arquivos que tenha espaço livre. Defina seus arquivos para o mesmo tamanho, aumente-os ao mesmo tempo para os mesmos tamanhos e deixe o round robin com algoritmo de preenchimento proporcional fazer o seu trabalho.
Em seguida, eles devem ser movidos para unidades diferentes onde houver espaço ou movidos para que todas as unidades tenham espaço ou as unidades expandidas.
Isso realmente se resume à administração. Este será um problema sempre presente, enquanto os arquivos de dados são muito diferentes em espaço livre e tamanho. O motivo se resume ao preenchimento proporcional e alocações de rodízio.
Um resumo muito rápido do preenchimento proporcional no SQL Server é que o arquivo no grupo de arquivos com mais espaço livre deve ser alocado com mais frequência do que aqueles com menos espaço livre. Se houver um arquivo com pouco ou nenhum espaço livre, ele será ignorado. Isso significa que quando você tem apenas um arquivo em seu grupo de arquivos que realmente tem algum espaço, você está efetivamente identificando todas as alocações lá. A parte round robin é apenas as alocações entre os arquivos.
Como você está mantendo apenas um único arquivo com quantidades desequilibradas de espaço livre, isso se tornará um único ponto de acesso para todas as alocações. É por isso que aconselhei o acima para igualar seus arquivos o máximo possível.