Array
(
)

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

Jerfeson
   - 28 out 2012

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á!

Claudiadnh
   - 28 out 2012

Já importei esse BD e realmente a versão é 2005.

Claudiadnh
   - 28 out 2012

Já importei esse BD e realmente a versão é 2005.

Jerfeson
   - 28 out 2012

Claudia, esse 'Mydatabase' é um nome ficticio que dei a base para postar aqui no forum. Não leve em consideração o descrição da base. Acabei de testar no SQL Server 2000 e da a mensagem de 'Server: Msg 943, Level 14, State 1, Line 1 Database 'S8_Real' cannot be opened because its version (655) is later than the current server version (539)'. Acredito que o problema esteja mesmo de fato na versão e nível de compatibilidade, pois verifiquei que os arquivos .mdf e .ldf foram criados no SQL Server 2005. Irei instalar pra testar.

Claudiadnh
   - 28 out 2012

Quando disse já migrei esse BD, quis dizer que já migrei um com o nome S8_Real, provavelmente é do mesmo software. Instala aí o 2005 pra ver, a versão que eu peguei na época pra migrar era essa. Qualquer coisa posta aí novamente.

Jerfeson
   - 28 out 2012

Entendi Claudia. É justamente isso..O BD desta solução ficou em modo suspect e estou tentndo recuperá-lo.

Jerfeson
   - 28 out 2012

Claudia, instalei o SQL Server 2005 Developer e executei os procedimentos e dar as seguinte mensagem agora:
Msg 948, Level 20, State 1, Line 1
'S8_Real "O banco de dados não pode ser aberto porque ele é a versão 655. Este servidor suporta a versão 611 e mais cedo. Um caminho de rebaixamento não é suportado.

Roniere Almeida
   - 28 out 2012

não conhecia esse erro, vou acompanhar o post!!!

Jerfeson
   - 28 out 2012

Instalei o 2005 Developer e a mensagem continua. Qual edição você utilizou do SQL Server 2005 pra migrar?? Lembrando que o DB que tenho disponível não dar pra ser usado mais no Express, pois ultrapassou o limite de 4GB e fato a solução vem com SQL Server 2005 Express no pacote instalado.

Jerfeson
   - 28 out 2012

Inclusive tentei desanexar e anexar novamente com o comando:

create database S8_Real on
(filename = 'C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\Data\s8_Real.mdf'),
(filename = 'C:\Arquivos de programas\Microsoft SQL Server\MSSQL.1\MSSQL\Data\s8_Real_log.ldf')
for attach

E dar o erro abaixo.

Msg 1813, Level 16, State 2, Line 1
Could not open new database 'S8_RealT'. CREATE DATABASE is aborted.
Msg 948, Level 20, State 1, Line 1
The database 'S8_RealT' cannot be opened because it is version 655. This server supports version 611 and earlier. A downgrade path is not supported.

Claudiadnh
   - 28 out 2012

Fica difícil de ajudar sem uma base com o mesmo problema, se você quiser me enviar o BD, aí posso tentar aqui.

Jerfeson
   - 28 out 2012

Tem messenger pra teclarmos melhor, pois lhe explicaria o problema.

Claudiadnh
   - 28 out 2012

Meu gtalk é claudiadnh@gmail.com.

Citação:
Tem messenger pra teclarmos melhor, pois lhe explicaria o problema.

Jerfeson
   - 29 out 2012

Adicionado. Mandei um email!

Antonio Alex
   - 29 out 2012

Bom dia!
Já tentou verificar o Nivel de Compatibilidade do Banco de dados?

Alex Souza
http://pessoalex.wordpress.com/

Jerfeson
   - 29 out 2012

Não tem muito haver com compatibilidade, mas na versão mesmo, pois o nível está 90, porém a versão 655 que é do SQL Server 2008. Já usei o 2005 Developer, 2000 Developer, 2012 Enterprise e 2008 R2 Enterprise e não consegui encontrar ainda uma solução.

Antonio Alex
   - 29 out 2012

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

Jerfeson
   - 29 out 2012

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.

Jerfeson
   - 29 out 2012

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.

Jerfeson
   - 29 out 2012

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?

Jerfeson
   - 31 out 2012

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!