Mensagem de Erro 946 no SQL Server com BD em estado Suspect
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
Respostas
Claudia Nogueira
28/10/2012
Claudia Nogueira
28/10/2012
Jerfeson
28/10/2012
Claudia Nogueira
28/10/2012
Jerfeson
28/10/2012
Jerfeson
28/10/2012
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/10/2012
Jerfeson
28/10/2012
Jerfeson
28/10/2012
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.
Claudia Nogueira
28/10/2012
Jerfeson
28/10/2012
Claudia Nogueira
28/10/2012
Jerfeson
28/10/2012
Antonio Alex
28/10/2012
Já tentou verificar o Nivel de Compatibilidade do Banco de dados?
Alex Souza
http://pessoalex.wordpress.com/
Jerfeson
28/10/2012
Antonio Alex
28/10/2012
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
28/10/2012
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
28/10/2012
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
28/10/2012
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
28/10/2012
Obrigado pela atenção de todos!
Andrea Alves
28/10/2012
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 ?
Andrea Alves
28/10/2012
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 ?
Roniere Almeida
28/10/2012
Obrigado pela atenção de todos!
que bom, mas o que fez com o BCP?
Alex Lekao
28/10/2012
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
Andrea Alves
28/10/2012
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.
Roniere Almeida
28/10/2012
Obrigado pela atenção de todos!
o que fez com o BCP?
Alex Lekao
28/10/2012
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
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.
Fabiano Carvalho
28/10/2012
Verifique esse link.
http://stackoverflow.com/questions/15163938/how-do-i-convert-a-sql-server-2008-mdf-file-to-sql-server-2012
Andrea Alves
28/10/2012
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
Alex Lekao
28/10/2012
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
Fabiano Carvalho
28/10/2012
Coloca a base em modo offline
Coloque a base em single user
Desatacha essa base criada.
Atacha com esse arquivo MDF que voce esta tentando.
Tente fazer o teste.
Jefferson Santos
28/10/2012
Descrição: Recuperar banco suspect.
Criado por: Thiago Cruz
NOTA:
1) Alterar bando de dados;
2) Executar um comendo de cada vez.
*/
EXEC sp_resetstatus 'Nome do Banco'
ALTER DATABASE Nome do Banco SET EMERGENCY
DBCC checkdb('Nome do Banco')
ALTER DATABASE Nome do Banco SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DBCC CheckDB ('Nome do Banco', REPAIR_ALLOW_DATA_LOSS)
ALTER DATABASE Nome do Banco SET MULTI_USER
Roniere Almeida
28/10/2012
Jerfeson
28/10/2012
O comando pra identificar qual a versão que seu database está é: DBCC DBINFO WITH TABLERESULTS observando a coluna dbi_version.
Afirmou que o servidor foi perdido. Veja se o cliente tem a documentação da compra da licença para identificar qual a versão. Sugiro que instale a versão 2005 do SQL Server, pois é bem possível que resolva seu problema. É bom deixar claro que não consegue atachar um database de versão 643 em versões de SQL Server anteriores.
Os links abaixo irão ajudá-las a resolver o problema.
[url:descricao= Versoes 655 e 611 - incompatível]http://social.msdn.microsoft.com/Forums/sqlserver/pt-BR/f466163a-6975-4770-8b6a-a9afb40e9487/versoes-655-e-611-incompatvel?forum=expresscompactpt[/url]
recuperando mdf com banco suspect
Internal Database Version
Veja se resolve, caso contrário posta aqui os resultados.
Boa sorte!