Mensagem de Erro 946 no SQL Server com BD em estado Suspect

28/10/2012

0

Pessoal, estou tentando recuperar um database que está em estado "suspect" usando os seguintes passos:

1) Movendo (copiar para outra pasta e apagar) os arquivos de dados e log do banco MyDatabase para outro local.

2) Criando um novo banco com o mesmo nome (MyDatabase) e parar o serviço do SQL Server.
CREATE DATABASE MyDatabase
SHUTDOWN

3) Apagar o arquivo de log e copiar o arquivo de dados que você salvou no item 1, por cima do arquivo novo criado no item 2 acima.

4) Executar o script abaixo.

ALTER DATABASE MyDatabase SET EMERGENCY
ALTER DATABASE MyDatabase SET SINGLE_USER
GO
DBCC CHECKDB (MyDatabase, REPAIR_ALLOW_DATA_LOSS)
WITH NO_INFOMSGS, ALL_ERRORMSGS
GO
ALTER DATABASE MyDatabase SET read_write
ALTER DATABASE MyDatabase SET multi_user
GO

Porém quando executo a etapa 4 do comando DBCC CHECK o SGBD retorna a seguinte mensagem:

Mensagem 946, Nível 14, Estado 1, Linha 1
Não é possível abrir o banco de dados ''S8_Real'' versão 655. Atualize o banco de dados para a versão mais recente.

Já tentei o procedimento no SQL Server 2008 e 2012 sem sucesso. Como me informaram que anteriormente a instância era no SQL Server 2005 irei fazer um testes, mas espero uma dica pra uma solução eficaz.

Agradeço desde já!
Jerfeson

Jerfeson

Responder

Posts

29/10/2012

Antonio Alex

Olhe este link...
http://www.mytechmantra.com/LearnSQLServer/Unable_to_Restore_Database_From_Backup.html

Alex Souza
MCP | MCTS: SQL Server 2008, Implementation and Maintenance
Blog Téc: http://pessoalex.wordpress.com
Linked: http://br.linkedin.com/in/pessoalex
MSN/GTalk: pessoalex@gmail.com
Twitter: AlexSouza_SQL
Responder

29/10/2012

Jerfeson

Acompanhei o link que mandou e verifiquei a versão está desta forma:

dbi_dbid = 5 dbi_status = 65544 dbi_nextid = 236332402
dbi_dbname = S8_Real dbi_maxDbTimestamp = 2249000 dbi_version = 655
dbi_createVersion = 603 dbi_ESVersion = 0
dbi_nextseqnum = 1900-01-01 00:00:00.000 dbi_crdate = 2009-04-25 16:22:07.903
dbi_filegeneration = 12
dbi_checkptLSN

Na tabela do link que indicou não conseguir identificar qual será essa dbi_createVersion = 603. Irei testar no SQL Server 2008, pois estava testando no SQL Server 2008 R2.
Responder

29/10/2012

Jerfeson

De fato o problema estava na versão mesmo. Instalei o SQL Server 2008 e o comando DBCC CHECKDB funcionamento perfeitamente, mas o desafio agora é corrigi o problema do banco recuperando o mdf e ldf.

Coloquei o bd em estado de emergência (ALTER DATABASE 'S8_Real' SET EMERGENCY);
depois em modo de user exclusivo (ALTER DATABASE 'S8_Real' SET SINGLE_USER);

Até ai tudo bem.

Executei o comando DBCC CHECKDB (S8_Real). Retornou diversos erros.
Decidi desanexar e anexar usando comando:

EXEC sp_detach_db 'S8_Real'

CREATE DATABASE S8_Real
ON (FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\S8_Real.mdf'),
(FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Backup\S8_Real_Log.ldf')
FOR ATTACH;

Quando vou anexar dar o seguinte erro:

Mensagem 1813, Nível 16, Estado 2, Linha 2
Não foi possível abrir o novo banco de dados 'S8_Real'. CREATE DATABASE foi anulado.
Mensagem 3456, Nível 21, Estado 1, Linha 2
Não foi possível refazer o registro do log (53000:1397:4), para a ID da transação (0:17400629), na página (1:550561), banco de dados 'S8_Real' (ID do banco de dados 7). Página: LSN = (52999:365:122), tipo = 2. Log: OpCode = 2, contexto 3, PrevPageLSN: (52999:365:257). Repare o banco de dados ou restaure-o usando um backup.
Mensagem 3313, Nível 21, Estado 2, Linha 2
Ocorreu um erro na ID do registro de log (53000:1397:4) ao refazer uma operação registrada em log no banco de dados 'S8_Real'. Em geral, a falha específica é registrada anteriormente como um erro no serviço Log de Eventos do Windows. Repare o banco de dados ou restaure-o usando um backup completo.

Responder

29/10/2012

Jerfeson

ALTER DATABASE S8_REAL SET EMERGENCY;
GO
ALTER DATABASE S8_REAL SET SINGLE_USER;
GO
DBCC CHECKDB(S8_REAL, REPAIR_ALLOW_DATA_LOSS)
WITH NO_INFOMSGS, ALL_ERRORMSGS

Executei os comandos acima colocando no estado de emergência, porém quando executo DBCC CHECKDB dar o seguinte erro:

Mensagem 5123, Nível 16, Estado 1, Linha 1 CREATE FILE encontrou o erro do sistema operacional 3(O sistema não pode encontrar o caminho especificado.) ao tentar abrir ou criar o arquivo físico 'C:\Shop8\S8_Real_log.LDF'.
Mensagem 5024, Nível 16, Estado 2, Linha 1 Nenhuma entrada encontrada para o arquivo de log primário em sysfiles1. Não foi possível recriar o log.
Mensagem 5028, Nível 16, Estado 2, Linha 1 O sistema não pôde ativar uma parte do banco de dados suficiente para recriar o log.
Mensagem 7909, Nível 20, Estado 1, Linha 1 Falha no reparo do modo de emergência. É preciso fazer a restauração com um backup.

O interessante é que o BD está em modo de emergência e consigo fazer consulta nas tabelas normalmente. Algo que não conseguia antes. Como no estado de emergência é impossível realizar backups Full e de Log. Qual seria a alternativa mais cabível para resolver o problema?
Responder

31/10/2012

Jerfeson

Problema já resolvido pessoal. Instalei a versão 2008 enterprise e usei o utilitário bcp pra resolver o problema.

Obrigado pela atenção de todos!
Responder

26/02/2014

Andrea Alves

Jerfeson estou com o mesmo problema fiz os mesmo procedimento criei a base e substitui pelo os arquivos mdf e ldf com a instância parada depois subir a instância e o banco de dados fica inacessível quando eu tento dar o comando
DBCC CHECKDB (nome_base, REPAIR_ALLOW_DATA_LOSS)
WITH NO_INFOMSGS, ALL_ERRORMSGS

apresentar o errror
Msg 946, Level 14, State 1, Line 1
Cannot open database 'DADOSADV' version 643. Upgrade the database to the latest version.

Como vc conseguiu resolver ?


Responder

26/02/2014

Andrea Alves

Jerfeson estou com o mesmo problema fiz os mesmo procedimento criei a base e substitui pelo os arquivos mdf e ldf com a instância parada depois subir a instância e o banco de dados fica inacessível quando eu tento dar o comando
DBCC CHECKDB (nome_base, REPAIR_ALLOW_DATA_LOSS)
WITH NO_INFOMSGS, ALL_ERRORMSGS

apresentar o errror
Msg 946, Level 14, State 1, Line 1
Cannot open database 'DADOSADV' version 643. Upgrade the database to the latest version.

Como vc conseguiu resolver ?


Responder

26/02/2014

Roniere Almeida

Problema já resolvido pessoal. Instalei a versão 2008 enterprise e usei o utilitário bcp pra resolver o problema.

Obrigado pela atenção de todos!


que bom, mas o que fez com o BCP?
Responder

28/02/2014

Alex Lekao

Oi Andrea, boa noite!!

quais as versoes, que o banco foi gerado e qual a versao que vc esta uasndo do SQL???

o amigo acima resolveu com uma versao mais recente em relacao ao banco que ele usava.

Abraco.

Alex - Lekao
Responder

01/03/2014

Andrea Alves

Boa noite!! Alex

A versão que o banco foi gerado não sei, porque o cliente não sabe informar qual versão estava simplesmente ele perdeu o servidor e consegui recuperar o disco que estava os arquivos mdf e ldf.

A versão que estou usando é sql server 2008 R2 Standard.


Você já viu esse error ?

Esse é o error que apresentar ai attach o .mdf
Converting database 'S8_Real' from version 643 to the current version 661.
Database 'S8_Real' running the upgrade step from version 643 to version 644.
Msg 601, Level 12, State 3, Line 1
Could not continue scan with NOLOCK due to data movement.
The statement has been terminated.


Responder

01/03/2014

Roniere Almeida

Problema já resolvido pessoal. Instalei a versão 2008 enterprise e usei o utilitário bcp pra resolver o problema.

Obrigado pela atenção de todos!


o que fez com o BCP?
Responder

05/03/2014

Alex Lekao

Oi Andrea, boa tarde!!!

Desculpe a demora, feriado prolongado, aproveitei para emendar. rsrsr

Entao, se eu estou entendendo bem a mensagem, esta tendo algum problema com a versao, eu nunca vi particularmente esse problema nem vivenciei.

Eu ja fiz algumas vezes, foi restaurar o backup no 2008 e restaurar no 2012 sem problemas.

Vc esta fazendo um procedimento de importacao da base?

Esperimente apenas atachar o backup ao servidor para ver se da certo.

Espero ter ajudado.

Abraco.

Alex - Lekao

Boa noite!! Alex

A versão que o banco foi gerado não sei, porque o cliente não sabe informar qual versão estava simplesmente ele perdeu o servidor e consegui recuperar o disco que estava os arquivos mdf e ldf.

A versão que estou usando é sql server 2008 R2 Standard.


Você já viu esse error ?

Esse é o error que apresentar ai attach o .mdf
Converting database 'S8_Real' from version 643 to the current version 661.
Database 'S8_Real' running the upgrade step from version 643 to version 644.
Msg 601, Level 12, State 3, Line 1
Could not continue scan with NOLOCK due to data movement.
The statement has been terminated.


Responder

05/03/2014

Andrea Alves

Alex o error é quando eu tento attach o arquivo .mdf


Quando eu executo


EXEC sp_attach_single_file_db @dbname = 'Banco',
@physname = 'D:\MSSQL\Data\DADOSADV.mdf'

Apresento o error :

New log file 'D:\MSSQL\Data\Banco_log.LDF' was created.
Converting database 'Banco' from version 643 to the current version 661.
Database 'Banco' running the upgrade step from version 643 to version 644.
Msg 601, Level 12, State 3, Line 1
Could not continue scan with NOLOCK due to data movement.
The statement has been terminated.


Não tem como eu realizar o backup e fazer o restore porque eu não tenho mais a instância que foi criada esse banco, pois o cliente perdeu o server.

Já tentei criar o banco e parar os serviço e substituir os arquivos mdf e ldf. já tentei de tudo nas versão sql server 2005 e 2008 R2
Responder

05/03/2014

Alex Lekao

Oi Andrea, boa tarde!!!

Vc chegou a verificar o link sugerido pelo Fabiano?

Honestamente nao poderei ajudar.

SE eu encontrar alguma coisa eu posto aqui, mas honestamente acredito que atingi meu limite. rsrsr

Desculpe nao poder ajudar.

Abraco.

Alex - Lekao
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar