Problema do SQL Server 2005

1

Estou preso.

Acabei de fazer manutenção em um SQL Server ... que não foi feito backup em um bom tempo ... O arquivo de log cresceu para mais de 1.61TB ... Sim, 1.61TB.

Ele engoliu todo o espaço disponível em disco. Eu tentei backup (não pode por causa do tamanho do arquivo de log), eu tentei desanexar (não pode porque o arquivo de log está cheio), eu tentei encolher o banco de dados e arquivo de log (não pode .. .get vários erros.) Eu estou em um local realmente difícil por um par de razões ...

  1. Este não é mais um programa que é 'usado', mas as pessoas ainda o acessam para obter dados.

  2. Isso levou um disco de 2 TB para 9,94 MB.

Ajuda.

EDIT: Além disso, eu não posso mudar o modo de recuperação para "FULL" para fazer um backup adequado ... Ele apenas se senta e gira ... Vou dar-lhe um par de horas e check-in .

Que dor.

    
por JohnM 08.08.2013 / 17:02

3 respostas

4

Geralmente, nesses casos, é melhor alternar o modo de recuperação do banco de dados para Simple e, em seguida, fazer uma redução no arquivo de log (não no próprio banco de dados). Às vezes você terá que reduzir o log algumas vezes para diminuí-lo.

Se você não conseguir um bom backup antes de fazer isso, certifique-se de ter uma boa recuperação imediatamente após.

    
por 08.08.2013 / 18:03
2

Desde que você disse que o banco de dados está em recuperação simples ... Tente isso, em partes, durante a manutenção agendada (haverá tempo de inatividade).

USE master
Go
ALTER DATABASE YourDB
SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [YourDB] SET RECOVERY SIMPLE WITH NO_WAIT
GO

(Eu sei, eu sei, você disse que era simples. Mas isso é um comportamento estranho para recuperação simples.)

USE [YourDB]
GO
DBCC SHRINKFILE (N'YourDB_log' , 0, TRUNCATEONLY)
GO

e

USE [YourDB]
GO
DBCC SHRINKFILE (N'YourDB_log' , 0)
GO

(Repita conforme necessário).

ALTER DATABASE YourDB
SET MULTI_USER;
GO

E depois faça o backup .

Edit: Ok, então isso não funcionou. Se você tem outro servidor SQL 2005, você pode querer tentar copiar o mdf para o outro servidor e usando

EXEC sp_attach_single_file_db @dbname='YourDb',
@physname=N'D:\Path\YourDb.mdf'
GO

Se isso funcionar, você poderá fazer backup dos arquivos de banco de dados antigos em outro lugar, descartar o banco de dados antigo e reconectar o novo banco de dados. Descreva, negue, renuncie. (Transações não autorizadas serão perdidas.)

    
por 08.08.2013 / 22:13
0
Tendo passado por esse problema na semana passada, mudei para o modo simples, mas ele não me permitiria diminuir o banco de dados. A solução que usei foi transformar o backup em Simple, depois criar um backup, que teoricamente limpa o arquivo de log. No meu servidor não, então eu fui em frente e restaurar o banco de dados do backup que eu tinha acabado de criar, em seguida, excluiu o original uma vez que tudo foi retirado. Meu tamanho de arquivo de banco de dados é agora 25mb de 200gb. A desvantagem disso, no entanto, é que você perde todos os seus backups pontuais (o que significa que o backup mais antigo agora é o que está sendo executado no servidor). Não foi um problema para nós, mas pode ser um problema para você.

    
por 08.08.2013 / 23:10