O banco de dados do SQL Server preencheu o disco rígido e liberar espaço não é possível

1

Eu tenho um banco de dados no SQL Server 2008 em um disco rígido de 1Tb e ele preencheu a unidade, há apenas 4Kb livre. O arquivo MDF é 323Gb e o LDF é 653Gb. O disco rígido no qual o DB está instalado não possui outros arquivos além do MDF e do LDF, portanto, é impossível liberar espaço na unidade. O disco rígido principal é menor, mas há espaço suficiente para transferir o MDF para essa unidade, caso isso ajude. Este servidor está no exterior em um site do cliente e não é possível no momento adicionar mais espaço em disco ao servidor. Também não é possível excluir nenhum registro porque o banco de dados está em um modo de falha (devido a nenhum espaço em disco) e não responde à maioria dos comandos. O banco de dados está atualmente no modo de recuperação total e é por isso que o arquivo LDF é tão grande. Este DB realmente não precisa estar em plena recuperação, então, no futuro, planejamos alterná-lo para o modo simples, o que nos poupará muito espaço. Eu também não me importo em perder o arquivo LDF, mas preciso de todos os dados. Passei muito tempo procurando uma saída para esse problema, mas tudo o que encontrei primeiro envolve liberar espaço em disco ou adicionar mais espaço em disco, e nenhuma delas é uma opção no momento. Estou preso e qualquer ajuda seria muito apreciada.

Eu recebo o seguinte registro ao tentar mudar o DB para o modo online.

Msg 945, Level 14, State 2, Line 3 Database 'DBNAME' cannot be opened due to inaccessible > files or insufficient memory or disk space. See the SQL Server errorlog for details. Msg > 5069, Level 16, State 1, Line 3 ALTER DATABASE statement failed. Msg 1101, Level 17, State 12, Line 3 Could not allocate a new page for database 'DBNAME' because of insufficient disk > space in filegroup 'DEFAULT'. Create the necessary space by dropping > objects in the filegroup, adding additional files to the filegroup, or setting autogrowth > on for existing files in the filegroup.

Encontrei as soluções a seguir, mas nenhuma funciona devido a não haver espaço em disco nessa unidade e, como o banco de dados está em estado de falha, não consigo executar a maioria dos comandos. - DBCC SHRINKFILE - não pode ser executado porque fazer um 'use DBNAME' falha - Desanexando o banco de dados e, em seguida, alterando a localização dos arquivos MDF / LDF, isso falhará porque o banco de dados está em um modo off-line, portanto, você não pode executar o desanexamento.

Não sei o que mais tentar.

Obrigado.

    
por Jon 28.10.2011 / 19:20

2 respostas

2

Isso porque você não está fazendo backups . Seus arquivos de log (.LDF) são limpos quando você faz um backup do banco de dados. Você pode fazer um backup real e encolher os logs, ou você pode usar modo de recuperação simples e encolher os arquivos de banco de dados para enganar o SQL Server para pensar que você fez um backup adequado, mas tudo o que ele fará será liberar espaço. Isso impedirá sua capacidade de reproduzir os logs de transação e reverter. Certifique-se de entender as implicações antes de fazer isso.

É claro que isso pode falhar devido ao seu problema de espaço em disco extremo , portanto, talvez seja necessário estender a unidade primeiro (o que você disse pode não ser fácil) antes que qualquer um desses comandos funcione.

    
por 05.08.2013 / 01:56
0

Se o volume de disco estiver usando unidades de alocação NTFS 4K, você poderá interromper a instância, compactar os arquivos do banco de dados (fazer o menor primeiro) e depois reiniciar a instância e colocar o banco de dados online.

Outra opção pode ser adicionar espaço ao servidor usando iSCSI e montar o volume abaixo do volume existente. Este é um tiro longo, mas vale a pena investigar.

    
por 23.11.2011 / 14:35