O grupo de arquivos primário está cheio do SQL Server 2008

15

Eu tenho uma tabela grande (~ 50 milhões de linhas). Estou tentando inserir em massa no SQL Server e recebo o erro:

Não foi possível alocar espaço para o objeto 'myDB' no banco de dados 'I 3 Stroke' 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 configurando o crescimento automático para arquivos existentes no grupo de arquivos.

Há outra tabela no banco de dados com cerca de 25 milhões de linhas. Esse banco de dados será usado apenas em uma única máquina e será projetado para extrair dados que já existem e, sob nenhuma circunstância, crescerá além do tamanho atual.

Para uma situação como essa, qual é a melhor maneira de resolver isso para que o SQL Server não se queixe? A solução importará que esse banco de dados não seja exposto a vários usuários?

wootscootinboogie
fonte
2
Você precisa adicionar mais espaço ao banco de dados ou remover objetos não utilizados. Qual a sua pergunta?
Gordon Linoff
@GordonLinoff, quando o banco de dados foi criado, o grupo de arquivos foi projetado para ter um crescimento irrestrito, e ainda assim estou enfrentando esse problema. Espero encontrar uma maneira de impedir que isso aconteça novamente.
Wootscootinboogie
1
Você tem mais espaço em disco físico disponível? Nesse caso, verifique os logs de erro do SQL Server e veja se há informações adicionais sobre por que o crescimento automático falhou.
28413 Kevin
Você poderia confirmar se há espaço em disco suficiente disponível? Essa é a única causa plausível, exceto pelo crescimento restrito de arquivos (que você disse que não é o caso).
usr
1
Talvez você esteja atingindo o limite de tamanho de banco de dados da edição expressa do sql.
de Bruno Martinez

Respostas:

17

Siga esses passos:

  1. Identifique quanto espaço você deseja adicionar à alocação de armazenamento do banco de dados:
    1. Abra o Windows Explorer
    2. Clique com o botão direito do mouse na unidade de disco em que seus arquivos de banco de dados existem
    3. Selecionar propriedades
    4. Verifique quanto espaço em disco está disponível e decida quanto disso você deseja alocar para o banco de dados
      ( Sugestão: deixe pelo menos 20% de espaço livre em disco se você hospedar os arquivos de banco de dados no mesmo disco que o seu SO { Sub-sugestão : Não Reconstrua / migre seus dados para seu próprio disco; você está se atrapalhando com a E / S.} e deixe pelo menos 8% para um disco de dados puro; esses números são estimativas do que eu acho que as porcentagens reais sugerem são. )
  2. Atualize a alocação de armazenamento para o banco de dados.
    1. Abrir SSMS
    2. Clique no separador "Ver"
    3. Selecione "Pesquisador de Objetos"
    4. Expanda a pasta "Bancos de dados"
    5. Clique com o botão direito do mouse no banco de dados que você está tentando inserir em massa
    6. Selecione "Propriedades"
    7. Clique na opção da lista "Arquivos" na área "Selecionar uma página" à esquerda da janela de propriedades
    8. Localize a linha "Arquivos de banco de dados" com o "Grupo de arquivos" como "PRIMÁRIO"
    9. Adicione o número de megabytes que você deseja adicionar à alocação do banco de dados ao número "Tamanho inicial (MB)"
    10. Pressione "OK"
      ( você também pode considerar seus valores de "crescimento automático" enquanto estiver aqui ) .

Você deseja fornecer ao seu banco de dados o máximo de alocação de armazenamento possível. Se ficar sem espaço, você receberá esse erro sem o crescimento automático ativado e se o crescimento automático estiver ativado, você terá um impacto no desempenho sempre que precisar crescer automaticamente. Se você está simplesmente sem espaço em disco, essa é a sua resposta e precisa de um disco maior.

Eric J. Price
fonte
1
Todos nós não queremos DIKs maiores? : P
Santa
12

O Express Edition 2014 tem um limite de 10 GB por banco de dados. Se o crescimento automático de um banco de dados atingir esse ponto, o SQL Server lançará a mensagem de erro (obscura?), Sem mencionar o limite de licença. Pode haver muito espaço em disco, mas você ainda vê esta mensagem.

Solução se o design permitir: use vários bancos de dados sob esta licença.

RickC
fonte
1

Os bancos de dados geralmente ficam sem espaço quando estão no modo de recuperação total. Se você não estiver fazendo transações e os backups manuais forem suficientes, poderá alterar o modo de recuperação para simples.

Também pode ser necessário recuperar espaço no arquivo de log. . . pode ser esvaziado, mas ainda usa espaço.

No entanto, é melhor fazer essa pergunta aos DBAs, que podem oferecer mais soluções.

Gordon Linoff
fonte
Este não é um problema de crescimento de log com falha. Falha no crescimento dos dados.
usr
@usr. . . Eles provavelmente ocupam o mesmo espaço em disco subjacente. O problema é a falta de espaço em disco.
Gordon Linoff
Ele diz que o espaço em disco está disponível. Eu perguntei explicitamente porque também suspeitava.
usr
Quanto espaço em disco está disponível / gratuito? Qual é o tamanho atual de todos os arquivos no grupo de arquivos primário e qual é a configuração de crescimento? É possível que o incremento de crescimento seja maior que o espaço livre disponível.
user9164
1

Na minha experiência, essa mensagem ocorre quando o arquivo primário (.mdf) não possui espaço para salvar os metadados do banco de dados. Este arquivo inclui as tabelas do sistema e eles apenas salvam seus dados nele.

Deixe algum espaço no arquivo e os comandos funcionarão novamente. Isso é tudo, aproveite

FcoJavier99
fonte