Não foi possível alocar uma nova página para o banco de dados devido ao espaço em disco insuficiente

13

Usando o Assistente para Importação e Exportação do SQL Server, recebo este erro:

Erro 0xc0202009: Tarefa 1 do fluxo de dados: Código de erro SSIS DTS_E_OLEDBERROR.
Ocorreu um erro no OLE DB. Código de erro: 0x80004005.
Não foi possível alocar uma nova página para o banco de dados 'banco de dados' devido ao espaço em disco insuficiente no grupo de arquivos 'PRIMARY'. Crie o espaço necessário soltando 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.

Estou tentando fazer upload de uma série de arquivos de 2 GB e enquanto carrego o 4º arquivo, continuo recebendo a mensagem de erro acima mesmo depois de acessar Propriedades do banco de dados> Arquivos e alterar o crescimento automático do grupo de arquivos para 2500 MB e tamanho máximo ilimitado.

Qual é a melhor solução alternativa? Esses dados acabarão ocupando cerca de 60 a 80 GB.

Aaron Bertrand
fonte
1
Qual versão do SQL Server você está executando? Quanto espaço livre está disponível nas unidades que armazenam os arquivos de dados para "banco de dados"?
Nabrond
2
A mensagem de erro informa as "melhores soluções alternativas": Crie o espaço necessário soltando 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. Não sei o que mais podemos lhe dizer.
1
Brandon, SQL SERVER 2012. 760 GB de espaço livre na unidade que armazena os arquivos de dados no banco de dados. Ken, eu tenho o crescimento automático ativado, o crescimento automático cresce em 2500 MB e o tamanho máximo ilimitado. Ainda devo estar enfrentando esse problema? É possível que haja vários crescimentos automáticos que precisam ser ativados?
1
Você tentou aumentar manualmente o banco de dados?
1
É possível que o crescimento automático funcione apenas entre elementos e que uma inserção ONE ultrapasse o limite? Seria minha aposta - se uma inserção de 20000gb falhar em um crescimento automático de 2500gb .... pode haver 900mb livres e a inserção falha.
TomTom

Respostas:

11

O banco de dados sql express alcançará 10g. Eu acredito que isso é semelhante à mensagem de erro que você recebe.

Encontrei esse problema uma vez em um cliente e demorei um pouco para descobrir.

qual versão do sql você está executando?

greg
fonte
1
esta solução me salvou! Eu estava na versão Express e atualizei para o desenvolvedor.
Israel Rodriguez
7

Tem certeza de que é

Não foi possível alocar uma nova página para o banco de dados 'banco de dados' devido ao espaço em disco insuficiente no grupo de arquivos 'PRIMARY'.

e não

Não foi possível alocar uma nova página para o banco de dados 'tempdb' devido ao espaço em disco insuficiente no grupo de arquivos 'PRIMARY'.

?

Se estiver realmente [tempdb]na mensagem de erro, é algo que precisa ser gerenciado separadamente, garantindo que [tempdb]esteja em um disco de tamanho apropriado, separado de outro banco de dados.

Se não estiver [tempdb]na mensagem de erro, eu imagino que um "upload" desse tipo seria [tempdb]muito difícil. Está [tempdb]no mesmo disco / LUN que 'database'? Nesse caso, você provavelmente está exacerbando seu problema com várias tentativas de aumento de arquivos (em vários bancos de dados). Portanto, enquanto você faz esse "upload", verifique também o monitoramento [tempdb].

Se [tempdb]estiver em uma unidade separada e você tiver certeza de que possui espaço suficiente, eu dimensionaria seu arquivo de dados para o tamanho que você espera ser do estado final:

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE
    (
    NAME = datafile,
    SIZE = 60GB,
    FILEGROWTH = 5GB
);
GO

Além disso, verifique se o arquivo de log do banco de dados é separado do arquivo de dados. Caso contrário, você estará de volta com eventos de crescimento concorrentes. Se eles estiverem em discos separados, eu também os analisarei e dimensionarei adequadamente.

USE master;
GO
ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 8000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 16000MB
);
GO

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 24000MB
);
GO
...

até chegar ao tamanho do arquivo de log desejado. Vamos chamá-lo de 80 GB, onde você definirá seu crescimento para um tamanho específico. Estou usando os valores recomendados por Paul Randal e Kimberly Tripp

ALTER DATABASE [database]
MODIFY FILE 
(
    NAME = logfile, 
    SIZE = 80000MB,
    FILEGROWTH = 8000MB
);
swasheck
fonte
6

Tente aumentá-lo manualmente:

1. No Pesquisador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server e expanda essa instância.

2.Expandar bancos de dados, clique com o botão direito do mouse no banco de dados para aumentar e, em seguida, clique em Propriedades.

3.Em Propriedades do banco de dados, selecione a página Arquivos.

4.Para aumentar o tamanho de um arquivo existente, aumente o valor na coluna Tamanho Inicial (MB) do arquivo. Você deve aumentar o tamanho do banco de dados em pelo menos 1 megabyte.

5.Para aumentar o tamanho do banco de dados adicionando um novo arquivo, clique em Adicionar e insira os valores para o novo arquivo. Para obter mais informações, consulte Adicionar dados ou arquivos de log a um banco de dados

6.Clique em OK.

De: MSDN

Hart CO
fonte
4
A expansão manual é boa porque pode fornecer mais detalhes. No meu caso, obtive: "CREATE DATABASE ou ALTER DATABASE falhou porque o tamanho cumulativo do banco de dados resultante excederia seu limite licenciado de 10240 MB por banco de dados". Que é auto-explicativo.
user824276
1

Você também pode usar os seguintes scripts para liberar espaço no banco de dados:

DELETE FROM STActionLog
where id in (SELECT TOP 100000 id
             FROM STActionLog
             ORDER BY actionDate ASC)

delete from STActionLog
where actionDate < '2019-08-01'

Esses me ajudam com o erro :) Verifique também se temos espaço em disco suficiente no computador.

Razvan
fonte