Usuário com melhor resposta
Base corrompida

Pergunta
-
Olá,
Estou com uma base sql corrompida, alguém conhece alguma ferramenta para recuperar esse tipo de falha?
Me indicaram "Recovery for SQL Server" (http://www.officerecovery.com/mssql/index.htm) na versão demo do software ele conseguiu recuperar totalmente a estrutura do banco, mas nenhum dado.
Alguém conhece a ferramenta ou sabe indicar alguma outra que possa recuperar os dados?
Obrigado,
Alexandre previatti
Respostas
-
Uffffaa
consegui restaurar...
Obrigado a todos que me ajudaram, depois de muita briga com o SQL consegui recuperar o banco...
os seguintes passos foram feitos:
ALTER DATABASE afil SET EMERGENCY;
DBCC CHECKDB (afil, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;
sp_configure 'allow updates',1
reconfigure with override
DBCC CHECKDB (afil, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;
sp_dboption 'afil','single_user', false
sp_dboption 'afil', 'dbo use only', true
sp_configure 'allow updates',0
reconfigure with override
ALTER DATABASE afil SET MULTI_USER WITH ROLLBACK IMMEDIATE
Todas as Respostas
-
Olá Alexandre, existe um outro software que se chama "Kernel SQL Recovery", porém, vale reforçar que infelizmente nehuma ferramenta no mundo pode garantir que seus dados sejam recuperados de forma integra e na sua totalidade, ou seja, 100% restauração.
O ideal é sempre possuir um backup full da base de dados e juntamente com backups diferenciais e/ou de logs restabelecer o database o mais próximo do ponto de falha.
Me explica aí, o que vc já tentou fazer para recuperar, já tentou reatacha-lo?
-
Olá Emanuel,
Obrigado pela informação.
Vou explicar a situação...
Temos um servidor que possui dois softwares de terceiros, um desses softwares foi atualizado e durante o processo de atualização gerou um erro e corrompeu tudo q tinha SQL Server no Servidor.
Um responsável pelo software acessou o servidor e em vez de tentar recuperar o banco restaurou um backup que eles tinham de 20 dias atraz. Ai perguntamos se eles não tinham um backup mais recente, eles falaram q não, que a responsabilidade pelo backup do software deles, que eles são pagos pra dar manutenção, não é deles.
Agora estou com um arquivo .mdf e um .ldf e não consigo atachar no sql.
Obrigado,
Alexandre Previatti -
Alexandré, se houve um restore de um backup de 20 dias em um database de produção, os dados foram sobrepostos e só podem ser recuperados se existiir um backup mais recente.Porém, como vc informa que está com arquivos MDF e LDF mais recentes e não consegue reatacha-los, pergunto:
Quando vc executa via query analyze:
exec sp_attach_db 'nome_database','caminho arquivo *.mdf','caminho_arquivo *.ldf'
é apresentado algum erro? qual?
-
Respondendo sua pergunta. Sim tenho os arquviso mdf e ldf corrompidos, consgui copiar esses arquivos antes do "super tecnico" restaurar o backup
exec sp_attach_db 'restaurar','d:\corrompido\corr.mdf','d:\corrompido\corr.ldf'
Msg 1813, Level 16, State 2, Line 1
Could not open new database 'restaurar'. CREATE DATABASE is aborted.
Msg 3456, Level 21, State 1, Line 1
Could not redo log record (10220:323:10), for transaction ID (0:1435348), on page (1:57896), database 'restaurar' (database ID 11). Page: LSN = (10203:318:10), type = 2. Log: OpCode = 2, context 3, PrevPageLSN: (10219:469:10). Restore from a backup of the database, or repair the database.
Msg 3313, Level 21, State 2, Line 1
During redoing of a logged operation in database 'restaurar', an error occurred at log record ID (10220:323:10). Typically, the specific failure is previously logged as an error in the Windows Event Log service. Restore the database from a full backup, or repair the database.
Event Logs:
Could not redo log record (10220:323:10), for transaction ID (0:1435348), on page (1:57896), database 'restaurar' (database ID 11). Page: LSN = (10203:318:10), type = 2. Log: OpCode = 2, context 3, PrevPageLSN: (10219:469:10). Restore from a backup of the database, or repair the database.
During redoing of a logged operation in database 'restaurar', an error occurred at log record ID (10220:323:10). Typically, the specific failure is previously logged as an error in the Windows Event Log service. Restore the database from a full backup, or repair the database. -
-
-
-
Junior, pelo que o alexandre relatou foi feito um restore do database na posição de 20 dias atrás, só pra resolver o problema do suspect. Mas o alexandre informou que existe uma cópia do mdf e ldf da posição antes do restore porém o arquivo está corrompido.
Alexandre, existe um outro procedimeto, que vc pode fazer.
Siga as instruções:
1 - crie um database novo, e defina o local para os arquivos de data e log.
2 - pare o sql
3 - substitua os arquivos mdf e ldf do novo database pelos que vc tem e que estáva com status de suspect.
esse procedimento irá leva-lo a mesma posição que estáva(em suspect), o problema todo é porque vc não está conseguindo atachar os arquivos pois, o SQL faz uma validação antes. vc fazendo isso que estou lhe dizendo irá forçar o SQL iniciar os arquivos e colocalos em Suspect.
4 - inicie o SQL server. Note que o database deve estar com o status de suspect.
5 - agora vc deve realizar um dbcc checkdb.
para isso, siga os passos:
sp_dboption
corpore ,'single use', true --colocar o databasse como single usedbcc
checkdb(corpore,'REPAIR_REBUILD') --tenta reparar sem perder dados.sp_dboption corpore ,'single use', false
caso o status ainda esteja como suspect, vc deve forcar com o comando(REPAIR_ALLOW_DATA_LOSS) que pode fazer com que vc os dados corrompidos sejam perdidos.
sp_dboption corpore ,'single use', true --colocar o databasse como single use
dbcc
checkdb(corpore,'REPAIR_REPAIR_ALLOW_DATA_LOSS') --tenta reparar sem perder dados.sp_dboption corpore ,'single use', false
Verifica se isso resolve, caso contrário teremos que encontrar outras alternativas para forçar o database mudar o status de suspect.
Veja bem existem outras formas de tentar mudar o status do teu database, mas lembrese deque existem erros e a forma de vc tentar restabelecer é realizando uma checagem de no database.
TAMBÉM RECOMENDO A VC A PRESERVAR OS *.MDF E *.LDF, antes de realizar esse procedimento que lhe falei.
Realize tais procedimento com uma cópias dos arquivos.
-
É infelizmente não funcionou...
ao executar o comando
sp_dboption corpore ,'single use', true
é gerado o erro:
Msg 926, Level 14, State 1, Line 1
Database 'afil' cannot be opened. It has been marked SUSPECT by recovery. See the SQL Server errorlog for more information.
Msg 5069, Level 16, State 1, Line 1
ALTER DATABASE statement failed.
sp_dboption command failed.
Msg 3456, Level 21, State 1, Line 1
Could not redo log record (10220:323:10), for transaction ID (0:1435348), on page (1:57896), database 'afil' (database ID 11). Page: LSN = (10203:318:10), type = 2. Log: OpCode = 2, context 3, PrevPageLSN: (10219:469:10). Restore from a backup of the database, or repair the database.
Msg 3313, Level 21, State 2, Line 1
During redoing of a logged operation in database 'afil', an error occurred at log record ID (10220:323:10). Typically, the specific failure is previously logged as an error in the Windows Event Log service. Restore the database from a full backup, or repair the database.
Msg 3414, Level 21, State 1, Line 1
An error occurred during recovery, preventing the database 'afil' (database ID 11) from restarting. Diagnose the recovery errors and fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support. -
Previatti,
Veja se este código de exemplo ajuda:
Code SnippetFaça o seguinte:
1 - Conecta-se ao SQL Server no banco Master.
2 - Execute este scritp:
sp_configure 'allow updates',1
reconfigure with override3 - Depois execute este outro script:
Update sysdatabases set status =32768 where name ='SeuBanco'
4 - Após mudar o status do banco para Emergency Mode, é necessário reconstruir o log de transações, utilize o DBCC rebuild_log:
Dbcc Rebuild_log ('NomedoSeuBanco','CaminhodoseuArquivodeLog')
5 - Agora para finalizar a recuperação do banco, é necessário realizar os seguintes procedimento para recuperação de dados corrompidos e também para verificar a integridade dos dados comprometidos.
Use SeuBanco
gosp_dboption 'SeuBanco', 'dbo use only', false
gosp_dboption 'SeuBanco','single_user', true
godbcc checkdb ('SeuBanco',repair_allow_data_loss)
go6 - Após realizar este procedimento o seu banco já deverá esta em estado normal, agora é necessário voltar a forma de acesso ao banco para multiuso:
Use SeuBanco
gosp_dboption 'SeuBanco','single_user', false
gosp_dboption 'SeuBanco', 'dbo use only', true
go
7 - Agora, vamos bloquear a permissão de alteração as table de sistema, faça o seguinte:sp_configure 'allow updates',0
reconfigure with override -
Olá Junior,
Não funcionou.. já tinha visto um tópico no fórum com esse post, mas tem comandos ai q não funcionam no sql 2005 só no 2000
ex.: Update sysdatabases set status =32768 where name ='SeuBanco'
gera um erro:
Ad hoc updates to system catalogs are not allowed. -
Previatti, é recomendável que vc primeiramente tente alterar o status de suspect usando o comando sp_resetstatus. caso não funcione aí, vc partiria para alterar o status na tabela sysdatabase.
sintaxe do comando:
exec sp_resetstatus database_name
-
-
-
-
Uffffaa
consegui restaurar...
Obrigado a todos que me ajudaram, depois de muita briga com o SQL consegui recuperar o banco...
os seguintes passos foram feitos:
ALTER DATABASE afil SET EMERGENCY;
DBCC CHECKDB (afil, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;
sp_configure 'allow updates',1
reconfigure with override
DBCC CHECKDB (afil, REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS;
sp_dboption 'afil','single_user', false
sp_dboption 'afil', 'dbo use only', true
sp_configure 'allow updates',0
reconfigure with override
ALTER DATABASE afil SET MULTI_USER WITH ROLLBACK IMMEDIATE -
-
Previatti, estou com o mesmo problema, baixei o aplicativo q vc baixou "Sql Recover for MSSQL", mas como vc conseguiu ver se ele recuperou todos os dados se a versão Demo recupera apenas parte dos dados?? ou tu comprou a licensa?? gostaria q vc tambem me ajudasse a resolver esse problema.
-
Previatti por favor me ajuda!!!! como vc conseguiu??? tentei fazer a mesma coisa q vc fez mas deu errado! vc executa aquela função com a base de dados em "Suspect" ou nao??
Parece esse erro:
Server: Msg 102, Level 15, State 6, Line 1
Incorrect syntax near 'EMERGENCY'.Por favor, aguardo respostas.
-
-
Seguinte, tenho um servidor de MU (Jogo RPG Online), e ontem pela manha o server reiniciou, e nao entrava o windows mais, coloquei o HD em outro PC e percebi que tinha perdido as partições do HD, e junto com a partição perdi o backup da semana, tenho apenas os Arquivos MDF e LDF, baixei o mesmo programa q vc, Kernel Recovery for SQL e recuperou tudo!! inclusive os dados perfeitamente, mas na hora de salvar percebi q a versão demo nao salva. resumindo tenho mais de 1000 contas na minha base de dados e 500 contas vip q podem ser perdidas e eu corro o risco de ter q devolver 500,00 reais aos usuarios VIP desse mes.
Meu SQL é MSSQL 2000, executei o codigo q vc me pediu no Query Analyzer e deu o seguinte resultado.
Server: Msg 208, Level 16, Stat 1, Line 1
Invalid object name 'sys.databases'.
me adiciona no msn
aguardo respostas, e agradeço a atenção.
-
-
Akiles, se vc possui os arquivos *.mdf e *.ldf e eles estão intactos, o caso é diferente do que foi resolvido aqui.
tivemos que simular a criação de um novo database e sobreposição dos arquivos MDF e ldf (originais e corrompidos) para que o SQL pudesse considerar o database que estava corrompido, depois tivemos foi feita a alteração para um status que podesse permitir a execução do DBCC CHECKDB.
no seu caso pode ser mais simples, vc já tentou somente reatacha-lo?
exec sp_attach_db nome_database,'local do carquivo *.mdf', 'local do carquivo *.ldf'
-
-
-
-
-
tentei, da o seguinte erro:
Incorrect syntax near 'ATTACH_REBUILD_LOG'.
Na realidade eu quero saber que mensagem é essa: "Could not open FCB for invalid file ID 0 in database "MuOnline" porque sempre q eu vou recriar o arquivo de log da essa mensagem, seja qual for o procedimento q eu faça, na hora de criar esse arquivo da essa mensagem.
-
Amigo, esses comandos são suportados no SQL2005, por isso, essa sessão onde esse post foi adicionado é referente restauração da database usando SQL 2005.Qual é a versão do teu SQL?
- Sugerido como Resposta euthiagoeu quinta-feira, 10 de dezembro de 2009 19:41
-
-
-
Les situations défavorables qui corrompent la base de données de SQL Server comme suit: défaillance du système, formatage et réinstallation questions, Oracle Application Dommages Server, infection par le virus, l'attribution de blocs défectueux, etc. Les scénarios inégales sont traitées avec succès l'Récupérer des données pour logiciel SQL Server Database Recovery. L'outil récupère les fichiers corrompus / endommagés base de données créés par SQL Server 2000, 2005, 2008 versions.
- Editado ponatol quarta-feira, 10 de junho de 2015 04:26